增加大模型
This commit is contained in:
+48
-3
@@ -2,17 +2,19 @@ import logging
|
||||
from contextlib import asynccontextmanager
|
||||
from pathlib import Path
|
||||
|
||||
from fastapi import FastAPI, HTTPException
|
||||
from fastapi.responses import FileResponse
|
||||
from fastapi import BackgroundTasks, FastAPI, HTTPException
|
||||
from fastapi.responses import FileResponse, Response
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from .config import ROOT_DIR, settings
|
||||
from .funding_store import get_funding_bundle
|
||||
from .kline_store import get_daily_candles, sync_daily_klines
|
||||
from .db import get_latest_snapshot, init_db, log_push, save_snapshot
|
||||
from .db import get_latest_snapshot, get_llm_interpretations, init_db, log_push, save_snapshot
|
||||
from .exceptions import BinanceRateLimitedError
|
||||
from .period_api import get_period_top30
|
||||
from .periods import get_daybefore_period, get_today_period, get_yesterday_period
|
||||
from .chart_image import render_daily_chart_png_async
|
||||
from .llm_service import get_interpret_state, run_interpretation_batch
|
||||
from .scheduler import job_finalize_yesterday, job_push_wecom, job_refresh_today, start_scheduler, startup_tasks, stop_scheduler
|
||||
from .stats import compute_three_day_stats
|
||||
from .aggregator import aggregate_period
|
||||
@@ -165,6 +167,49 @@ async def api_funding_history(symbol: str, limit: int | None = None, refresh: bo
|
||||
raise HTTPException(502, "资金费率获取失败") from e
|
||||
|
||||
|
||||
@app.get("/api/chart/{symbol}/daily.png")
|
||||
async def api_chart_daily_png(symbol: str, limit: int | None = None):
|
||||
sym = symbol.upper().strip()
|
||||
if not sym.endswith("USDT"):
|
||||
raise HTTPException(400, "invalid symbol")
|
||||
try:
|
||||
png = await render_daily_chart_png_async(sym, limit or settings.chart_kline_limit)
|
||||
return Response(content=png, media_type="image/png")
|
||||
except ValueError as e:
|
||||
raise HTTPException(404, str(e)) from e
|
||||
except Exception as e:
|
||||
logger.error("chart png %s failed: %s", sym, e)
|
||||
raise HTTPException(502, "图表生成失败") from e
|
||||
|
||||
|
||||
@app.get("/api/llm/status")
|
||||
async def api_llm_status():
|
||||
state = get_interpret_state()
|
||||
return {
|
||||
**state,
|
||||
"enabled": bool(settings.llm_api_key.strip()),
|
||||
"model": settings.llm_model,
|
||||
"base_url": settings.llm_base_url,
|
||||
"interval_sec": settings.llm_symbol_interval_sec,
|
||||
}
|
||||
|
||||
|
||||
@app.get("/api/llm/interpretations")
|
||||
async def api_llm_interpretations(batch_id: str | None = None, limit: int = 50):
|
||||
return {"items": get_llm_interpretations(batch_id, limit)}
|
||||
|
||||
|
||||
@app.post("/api/llm/interpret/run")
|
||||
async def api_llm_interpret_run(background_tasks: BackgroundTasks):
|
||||
if not settings.llm_api_key.strip():
|
||||
raise HTTPException(400, "LLM_API_KEY 未配置")
|
||||
state = get_interpret_state()
|
||||
if state.get("running"):
|
||||
return {"ok": False, "message": "解读任务进行中", **state}
|
||||
background_tasks.add_task(run_interpretation_batch)
|
||||
return {"ok": True, "message": "已启动三日交集解读队列", **get_interpret_state()}
|
||||
|
||||
|
||||
@app.post("/api/chart/{symbol}/daily/refresh")
|
||||
async def api_chart_daily_refresh(symbol: str, limit: int | None = None):
|
||||
"""强制从币安同步日 K 到本地库。"""
|
||||
|
||||
Reference in New Issue
Block a user