FinGPT API 配置
最后更新: 2026-07-16
FinGPT 的 AG2 多智能体金融分析管线,把模型配置成一个带 api_type 和 base_url 两个键的 LLMConfig 字典。base_url 填 https://api.kkaiapi.com/v1,传一个 Key,新闻研究员、情绪分析师、投资顾问三个智能体就都能通过一个端点寻址目录里的任意模型,Claude、GPT、DeepSeek、GLM 都算在内。
先说结论:base_url 写在 LLMConfig 字典里
FinGPT 的多智能体金融分析管线(仓库里的 fingpt/ag2_financial_analysis_pipeline.ipynb)把 LLM 配置写成一个 AG2 LLMConfig 字典,包含 model、api_key、api_type、base_url 四个键。上游 notebook 本身的示例就是把 base_url 指向一个 OpenAI 兼容的中转端点,而不是 api.openai.com,所以经网关接入是文档记录在案的用法,不是变通做法。 api_type 设成 "openai",base_url 填 https://api.kkaiapi.com/v1,api_key 填你的网关密钥,model 填目录里任意一个 ID。notebook 里每个 AssistantAgent 收到的是同一个 llm_config 对象,改一处就能把整个智能体团队一起搬过去。
from autogen import LLMConfig # ag2[openai]>=0.11.4
llm_config = LLMConfig({
"model": "claude-sonnet-5",
"api_key": os.environ["KKAIAPI_KEY"],
"api_type": "openai",
"base_url": "https://api.kkaiapi.com/v1",
})FinGPT 到底在哪里发起 LLM 调用
FinGPT(GitHub 上的 AI4Finance-Foundation,约 2.1 万星标)其实是同一个名字下的两件事,分清用的是哪一半,决定了自定义端点到底有没有意义。 第一半是微调开源权重:训练 Llama 和 ChatGLM 的 LoRA notebook,这部分让项目出了名。这些模型跑在本地或租用的 GPU 上,通过 Hugging Face transformers 加载,不发起任何 chat-completions 请求,自定义 base_url 对它们不适用。 第二半是应用管线,这才是 OpenAI 兼容接口真正生效的地方。AG2 多智能体分析管线把三个 AssistantAgent(新闻研究员、情绪分析师、投资顾问)接到同一个 LLMConfig 上,配合 yfinance 工具调用和本地 FinBERT 情绪分类器,让三个角色围绕一支股票的分析互相传递结论。财报分析管线(fingpt/FinGPT_FinancialReportAnalysis)则驱动 LangChain 的 ChatOpenAI 去分析通过 sec-api 和 Financial Modeling Prep 拉取的 SEC 文件。两条管线都发标准的 /v1/chat/completions 请求,都把端点暴露成参数,也都把 model 字段按纯字符串转发,这正是 api_type 设为 "openai" 却能让 Claude 或 DeepSeek 的 ID 跑起来的原因——只要 base_url 背后的端点提供这些模型。
完整配置:AG2 管线与财报分析管线
AG2 管线是最干净的接入点。把 notebook 里的 LLMConfig 值换成网关端点和喜欢的模型 ID,三个智能体和它们的工具调用循环原样运行。行情数据这一侧(yfinance 报价、FinBERT 情绪打分)是本地运行、不需要 Key 的,你挪动的只是 LLM 这一个外部依赖。 财报分析管线用的是 LangChain 的 ChatOpenAI,它的构造函数接受 api_key 和 base_url 两个参数;上游 notebook 演示的正是这一对参数,用来把模型换成一个本地 OpenAI 兼容服务器。把这两个参数指向网关即可。注意这个 notebook 拉数据还需要 SEC 和 Financial Modeling Prep 的凭证,这些是行情数据的 Key,和 LLM 端点无关,不需要改动。
import os
from autogen import AssistantAgent, LLMConfig
llm_config = LLMConfig({
"model": "claude-sonnet-5", # 目录里任意模型 ID
"api_key": os.environ["KKAIAPI_KEY"],
"api_type": "openai",
"base_url": "https://api.kkaiapi.com/v1",
})
researcher = AssistantAgent(name="News_Researcher", llm_config=llm_config)
analyst = AssistantAgent(name="Sentiment_Analyst", llm_config=llm_config)
advisor = AssistantAgent(name="Investment_Advisor", llm_config=llm_config)给金融分析智能体选模型
因为每个候选都只是对着同一个端点的一个模型字符串,实际的工作流是固定住标的和日期,每个候选 ID 各跑一遍管线,对比投资顾问的输出。按 Key 的用量日志会把每次跑的花费算清楚,用数字而不是直觉决定质量和成本的取舍。
- 投资顾问角色是推理瓶颈:它要把研究员的发现、情绪分数、风险状况综合成一份结论,claude-opus-4-8 或 gpt-5.5 这类旗舰推理模型是这份综合能力不流于泛泛而谈的地方
- 新闻研究员和情绪分析师是走量角色:读标题、整理工具输出、给草稿打分,claude-sonnet-5 或 deepseek-v4-pro 能在不用旗舰定价的情况下保持敏锐
- 财报分析是长上下文负载:一段 10-K 章节加目标价上下文本身就是一个大 prompt,先拿 gemini-3.1-pro-preview 或 claude-sonnet-5 在财报这一侧测一下,再决定默认值
- FinGPT 的根基是中英双语的。如果管线要读中文财报或新闻,glm-5.2 和 deepseek-v4-pro 在这方面本身就强,而且都能通过同一个端点按 ID 寻址
- 所有智能体共用一个 LLMConfig 是 notebook 的默认做法,但没有什么能阻止你对着同一个 base_url 搭两个字典——投资顾问用旗舰模型,读数据的角色用快模型——按角色分别指定
主力模型价格
价格按 kkaiapi 中文区实时价格计算,单位 ¥/1M tokens(输入/输出)。
| 模型 | 模型 ID | kkaiapi 价格(输入/输出) | 适合角色 |
|---|---|---|---|
| Claude Opus 4.8 | claude-opus-4-8 | ¥5 / ¥25 | 投资顾问 |
| GPT-5.5 | gpt-5.5 | ¥4 / ¥25 | 投资顾问 |
| Claude Sonnet 5 | claude-sonnet-5 | ¥3 / ¥15 | 新闻研究员 / 情绪分析师 |
| DeepSeek V4 Pro | deepseek-v4-pro | ¥3 / ¥6 | 走量角色,性价比 |
| GLM-5.2 | glm-5.2 | ¥7.2 / ¥25.2 | 中文财报与新闻 |
| Gemini 3.1 Pro Preview | gemini-3.1-pro-preview | ¥7 / ¥42 | 长上下文财报分析 |
翻车点:不是每个 base_url 都是 LLM 端点
FinGPT 是一个研究向的 monorepo,里面有几处看起来像 LLM 端点配置、实际不是的地方。 Forecaster 的 market_sentiment.py 有 api_key 和 base_url 参数,但它们配置的是一个行情情绪服务(读 ADANOS_API_KEY),不是 chat-completions 端点,改这个 base_url 不会路由任何 LLM 流量。FinGPT-Forecaster 本身的模型是微调过的 Llama 权重,通过 Hugging Face 提供服务,这个演示压根不是一个 OpenAI 兼容的消费方。 仓库里较新的 Finogrid 平台通过 FINGPT_LLM_PROVIDER 环境变量(openai、minimax 或 fingpt)选择 LLM,openai 这个 provider 读的是 OPENAI_API_KEY。截至目前它的示例环境文件只记录了 provider 切换和这个 Key,没有 base URL 覆盖变量,所以在上游补上文档之前,Finogrid 暂时不在网关适用范围内。 最后,AG2 的 notebook 锁定的是 ag2[openai] 0.11.4 或更新版本。更老的 pyautogen 0.2 时代的安装用 config_list 条目而不是 LLMConfig 类配置同样的四个键,键名一致,路由能正常工作,但导入写法要匹配你实际安装的 AutoGen 版本。
谁会经网关接入 FinGPT
- 跑多智能体分析扫一份标的清单的量化研究员。每支股票都要跑几十轮智能体对话,按 Key 的用量可见性比每家厂商各自的仪表盘更有用
- 对比不同模型家族分析质量的团队。每个候选只是 LLMConfig 里的一个模型字符串,不是一次新的供应商集成
- 批量处理财报的分析师,长上下文场景下不同 ID 之间的定价差异会主导账单
- 中英双语的金融团队,把 glm-5.2 或 deepseek-v4-pro 这类中文强项模型和 Claude、GPT 的推理能力搭配起来,都挂在一个端点下
- 拿不到某家厂商计费权限的开发者。充值即用、不需要银行卡,省掉逐个厂商单独开户这层依赖
验证接入与排查首次跑
跑 notebook 之前,先列出自己 Key 能寻址的模型;LLMConfig 里的模型字符串必须和某个已提供的 ID 精确匹配。 首次跑的失败集中在几类。401 意味着字典里的 api_key 对 base_url 指向的端点不是有效 Key;因为两者都住在同一个字典里,打印这个字典(去掉 Key)确认改的是智能体实际收到的那一份拷贝。模型不存在的报错是 ID 打错字,/v1/models 的输出是权威拼写。连接错误通常是 base_url 丢了 /v1 后缀,因为客户端会在你给的 base 后面拼接 /chat/completions。如果情绪分析这一步失败但智能体对话正常,那是本地 FinBERT 分类器或缺少 transformers 依赖的问题,不是网关的问题。 请求跑通之后,kkaiapi 控制台会显示每次请求的模型、token 数和花费。多智能体管线的调用量涨得很快,用量视图能在把扫描扩大到完整清单之前,先看清楚是哪个角色在消耗 token。
curl -s https://api.kkaiapi.com/v1/models \
-H "Authorization: Bearer $KKAIAPI_KEY" | head -50常见问题
FinGPT 原生支持自定义 OpenAI 兼容端点吗?
在它的 API 驱动管线里支持。AG2 多智能体分析 notebook 用 api_type "openai" 加 base_url 配置 LLMConfig,财报分析 notebook 把 base_url 传给 LangChain 的 ChatOpenAI。两者都是上游文档记录在案的用法;微调的本地模型是项目里独立、离线的另一半。
FinGPT 的智能体能这样跑在 Claude 或 DeepSeek 模型上吗?
能。api_type 保持 "openai",model 字段按纯字符串经 /v1/chat/completions 转发,base_url 背后端点提供的任何 ID 都能用,包括 Claude、DeepSeek、GLM、Gemini 的 ID。
跑 AG2 管线还需要 OpenAI 账号吗?
不需要。base_url 指向网关、api_key 是网关密钥之后,没有任何请求会碰到 OpenAI 的主机,上游 notebook 自己演示的正是通过一个非 OpenAI 兼容端点路由。
自定义 base_url 会影响 FinGPT 的行情数据或 FinBERT 情绪打分吗?
不会。yfinance 报价和 FinBERT 分类器本地运行、不需要 API Key,财报管线的 SEC 和 Financial Modeling Prep 凭证是独立的数据 Key。LLM 端点是 base_url 唯一挪动的东西。
Forecaster 的 market_sentiment.py 里那个 base_url 参数是怎么回事?
那个配置的是一个行情情绪服务,靠 ADANOS_API_KEY 鉴权,不是 LLM 端点。Forecaster 本身的模型是通过 Hugging Face 提供服务的微调权重,这里不适用 OpenAI 兼容路由。
FinGPT 里的 Finogrid 平台也支持自定义端点吗?
截至目前没有文档支持。Finogrid 通过 FINGPT_LLM_PROVIDER 选择 provider,读取 OPENAI_API_KEY,但它的示例环境文件没有展示 base URL 覆盖变量,在上游补上文档之前,应当假设它走的是直连厂商路由。