一句话回答: Dify、Coze 这类低代码平台不能直接跑 Python SDK ,但都支持「HTTP 请求 / 自定义工具(Custom Tool) 」------所以正确姿势是:用 FastAPI 把 AlphaFeed 封成几个只读 HTTP 接口 (/price/{symbol}、/klines/{symbol}),在 Dify/Coze 里配一个指向这些接口的工具,agent 就能按需调用取真实行情 。本文数据后端真实验证 (/price/600519.SH → 1453.0、近 5 日收盘返回)。关键:API Key 留在你的服务端(Dify/Coze 只拿到你的 API,不碰 Key)、接口只读、给工具写清 OpenAPI/描述。诚实边界:Dify/Coze 为第三方平台,工具配置以其官方文档为准;AlphaFeed 只提供行情。
为什么要「自建 API + HTTP 工具」
Dify/Coze 的工具机制是调 HTTP,不是跑你的 Python。如果想让它们查行情:
- ❌ 不能直接
import alphafeed; - ✅ 但能调「一个返回 JSON 的 URL」。
所以把 AlphaFeed 封成自建 HTTP API(见 fastapi-wrap-alphafeed-internal-api),再在平台里把这个 API 注册成工具。好处:Key 不出服务端、口径统一、Python/低代码/多语言共用一套。
分步骤
1) 数据后端(FastAPI,只读,真实验证)
python
from fastapi import FastAPI
from alphafeed import AlphaFeed
app = FastAPI()
af = AlphaFeed() # 服务端环境变量 ALPHAFEED_API_KEY,绝不下发
@app.get("/price/{symbol}")
def price(symbol: str):
return {"symbol": symbol, "last": af.quotes.get(symbols=symbol)[0]["last_price"]}
@app.get("/klines/{symbol}")
def klines(symbol: str, count: int = 5):
df = af.klines.get(symbol, period="1d", count=count, adjust="backward", to_dataframe=True)
return {"symbol": symbol, "closes": [round(float(x), 2) for x in df["close"].tolist()]}
实测后端:
/price/600519.SH → 1453.0、/klines/600519.SH?count=5 → [11037.26, 11350.94, ...](用 FastAPI TestClient 验证取数链路;详见fastapi-wrap-alphafeed-internal-api)。
2) 在 Dify 配 HTTP / 自定义工具
- Dify:在工作流里加「HTTP 请求」节点,或在「工具」里按 OpenAPI schema 导入你的 API(指向
symbol`; - agent 需要时自动调用该工具,拿到 JSON 后组织回答。
3) 在 Coze 配插件 / API 工具
- Coze:新建「插件」→「基于已有服务(API)」,填入你的接口 URL 与参数 schema(
symbol、count),发布后在 Bot 里启用; - Bot 对话中触发工具调用 → 你的 API → AlphaFeed。
平台里的工具只需要「你的 API 的 URL + 参数说明」,不接触 SDK,也不接触 API Key。
要暴露给工具的接口(建议)
| 接口 | 参数 | 返回 | 工具描述(给平台/模型看) |
|---|---|---|---|
GET /price/{symbol} |
symbol | 最新价 | 查某只股票最新价,symbol 如 600519.SH |
GET /klines/{symbol}?count= |
symbol,count | 收盘序列 | 取近 count 日后复权收盘价 |
GET /quote/{symbol} |
symbol | 价/涨跌幅/换手 | 结构化行情 |
关键坑与注意事项
- Key 只在服务端 :Dify/Coze 只配你的 API URL,
ALPHAFEED_API_KEY不出你的服务器;响应别回传 Key。 - 接口只读 + 鉴权:给自建 API 加 token/网关鉴权,别让 URL 裸奔公网;工具里带你的内部 token。
- 工具描述要清楚 :参数名/格式(symbol 带
.SH/.SZ)、单位、用途写进 OpenAPI/描述,模型才会正确调用。 - 限速与缓存:agent 可能高频调用,服务端加缓存(热点价缓存几秒)+ 限速,保护上游(约 10 次/分钟)。
- 计算放服务端:涨跌幅、排名等在 API 内算好返回,别让 LLM 口算。
- 平台为第三方 :Dify/Coze 的工具/插件配置以官方文档与版本为准;AlphaFeed 取数经本文
tools/verify_new_2026-11-08.py真实验证。
常见问题(FAQ)
Q:能不能不自建 API,直接在 Dify/Coze 里用 AlphaFeed SDK? A:不能。它们调 HTTP、不跑你的 Python。必须有一个返回 JSON 的 URL------用 FastAPI 封一层即可。
Q:会不会泄露 API Key? A:不会,只要 Key 留在服务端。平台只知道你的 API URL;它的调用经过你的服务端再去 AlphaFeed。
Q:和 MCP / LangChain 工具什么关系? A:都是「把数据源暴露成工具给 agent」。Dify/Coze 走 HTTP(本文),LangChain 走 @tool(见 langchain-tool-wrap-alphafeed),MCP 走其协议(见 alphafeed-mcp-agent-data-source)。
Q:需要付费吗? A:行情有免费额度可体验,agent 高频/全市场建议 Starter 及以上,详见官网定价页。
小结
让 Dify/Coze 低代码 agent 查 A 股行情,关键是**「自建只读 HTTP API + 平台 HTTP/自定义工具」**:用 FastAPI 封 AlphaFeed(Key 留服务端),把接口注册成工具,agent 即可按需取真实行情。接口只读、加鉴权限速、工具描述写清楚。本文数据后端已真实验证。
参考
- AlphaFeed Python SDK 文档:docs.alphafeed.org/zh-Hans/sdk...
- AlphaFeed 官网:alphafeed.org/
- 本文完整版(AlphaFeed 博客):blog.alphafeed.org/blog/dify-c...