feat: 暴露fuyao SDK全部A股接口 + AI分析轮次上限提至30

This commit is contained in:
Sakurasan
2026-09-01 17:04:38 +08:00
parent 8b43b57bb2
commit 86429f43c2
3 changed files with 145 additions and 4 deletions
+2 -3
View File
@@ -122,8 +122,9 @@ async def collect_ai_analysis(trade_date: str) -> dict:
total_tokens = 0
final_content = ""
was_truncated = False
max_rounds = 30 # 安全上限,正常分析约 3-8 轮
for i in range(8):
for i in range(max_rounds):
response = await call_llm(messages, tools=TOOLS)
total_tokens += response.get("usage", {}).get("total_tokens", 0)
@@ -138,11 +139,9 @@ async def collect_ai_analysis(trade_date: str) -> dict:
break
if finish_reason == "length":
# 响应被截断,保存已生成的内容
was_truncated = True
final_content = message.get("content") or ""
if not final_content:
# 如果当前消息没有内容,尝试从之前的消息中提取
for msg in reversed(messages):
if msg.get("role") == "assistant" and msg.get("content"):
final_content = msg["content"]
+24
View File
@@ -135,6 +135,14 @@ async def prices_historical(thscode: str, start_ms: int, end_ms: int,
interval="1d", adjust=adjust)
async def corp_actions_adjustment_factors(thscode: str, from_date: str = None,
to_date: str = None) -> dict:
data = await _run(_sdk.corp_actions_adjustment_factors, thscode,
**({"from": from_date} if from_date else {}),
**({"to": to_date} if to_date else {}))
return data or {}
async def calendar_trading_days() -> list[dict]:
return await _run(_sdk.calendar_trading_days)
@@ -285,3 +293,19 @@ async def limit_break_pool(date_ms=None, page=1, size=50,
data = await _run(_sdk.special_data_limit_break_pool, date_ms=date_ms,
page=page, size=size, sort_field=sort_field, sort_dir=sort_dir)
return data or {}
async def hot_stock_list_history(date: str) -> dict:
data = await _run(_sdk.special_data_hot_stock_list_history, date)
return data or {}
async def hot_stock_rank_trend(thscode: str, start_date: str, end_date: str) -> dict:
data = await _run(_sdk.special_data_hot_stock_rank_trend, thscode, start_date, end_date)
return data or {}
async def anomaly_analysis_stock(thscodes: str) -> dict:
codes = [c.strip() for c in thscodes.split(",") if c.strip()]
data = await _run(_sdk.special_data_anomaly_analysis_stock, codes)
return data or {}