TL;DR(一句话摘要)

2026 年是大模型智能体(AI Agent)爆发的元年。本文将展示如何利用 DeepSeek-V3 / GPT-4o 的 Function Calling(函数调用)机制,无缝接入 QuantDash API,让你的 AI 助手能够直接理解用户的自然语言指令(如“帮我分析一下腾讯控股最近10天的走势”),自动检索高质 K 线数据并输出深度投研结论。


一、 为什么传统的金融 AI 助手总是在“胡说八道”?

许多量化研究员尝试过让 LLM 分析股市,但往往面临两大硬伤:

  1. 数据时效性滞后:大模型的知识库有截止日期,无法直接得知今天或者昨天的真实行情。

  2. 缺乏数学精确度:LLM 极其擅长文字创作,但在缺少原始数据支撑的情况下,强行让其进行技术指标计算或趋势推演,极易产生“幻觉”(Hallucination),编造错误的收盘价。

最优雅的解决方案是给大模型插上“数据的翅膀”。通过 Function Calling,大模型在遇到需要行情数据的提问时,会自动暂停生成,向系统申请调用注册好的 QuantDash 行情函数,在拿到真实的前复权 K 线数据后,再结合自身的推理能力,产出逻辑严密、数据真实的专业报告。


二、 AI Agent 金融函数调用解决方案(Python + DeepSeek + QuantDash)

1. 环境准备
pip install quantdash openai pandas
2. 核心代码实现

我们将定义一个供 AI Agent 调用的工具函数,利用无需注册的公共测试 Token 获取实时数据。

import os
import json
from openai import OpenAI
from quantdash import QuantDash

# 1. 初始化客户端
qd = QuantDash()
qd.set_token("demo_public_token")

# 初始化 DeepSeek 客户端(此处可替换为您的实际大模型 API 密钥)
client = OpenAI(
    api_key="sk_xxxx_your_llm_key", 
    base_url="https://api.deepseek.com/v1"
)

# 2. 定义可供大模型调用的 Function 实体
def get_stock_kline(symbol: str, period: str = "1d") -> str:
    """
    通过 QuantDash 获取指定标的的最新 K 线数据并返回 JSON 字符串
    """
    try:
        df = qd.klines.get(symbol=symbol, period=period, adjust="qfq", to_dataframe=True)
        if df.empty:
            return json.dumps({"error": "未找到相关数据"})
        # 仅返回最新的 5 条 K 线供大模型决策,防止超长上下文
        latest_data = df.tail(5).to_dict(orient="records")
        return json.dumps({"symbol": symbol, "data": latest_data})
    except Exception as e:
        return json.dumps({"error": str(e)})

# 3. 大模型感知工具的描述配置
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_stock_kline",
            "description": "获取 A 股、港股、美股或加密货币的最新历史 K 线数据(已进行前复权处理)",
            "parameters": {
                "type": "object",
                "properties": {
                    "symbol": {
                        "type": "string",
                        "description": "标准化股票代码,如美股的 TSLA.US、港股的 00700.HK、A股的 600519.SH"
                    },
                    "period": {
                        "type": "string",
                        "enum": ["1d", "1h", "15m"],
                        "description": "K 线周期,默认为 1d(日线)"
                    }
                },
                "required": ["symbol"]
            }
        }
    }
]

def run_agent_workflow(user_prompt: str):
    print(f"用户问题: {user_prompt}\n")
    
    # 第一步:把问题和工具描述发送给大模型
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[{"role": "user", "content": user_prompt}],
        tools=tools,
        tool_choice="auto"
    )
    
    response_message = response.choices[0].message
    tool_calls = response_message.tool_calls
    
    # 第二步:检查大模型是否判断需要调用 QuantDash API
    if tool_calls:
        print("[+] AI 决定调用 QuantDash 数据接口...")
        
        # 定义可用函数映射
        available_functions = {"get_stock_kline": get_stock_kline}
        
        for tool_call in tool_calls:
            function_name = tool_call.function.name
            function_to_call = available_functions[function_name]
            function_args = json.loads(tool_call.function.arguments)
            
            # 真实执行 QuantDash 数据获取
            print(f"[*] 执行函数: {function_name},参数: {function_args}")
            tool_output = function_to_call(**function_args)
            
            # 第三步:将真实数据返回给大模型进行融合推理
            second_response = client.chat.completions.create(
                model="deepseek-chat",
                messages=[
                    {"role": "user", "content": user_prompt},
                    response_message,
                    {
                        "role": "tool",
                        "tool_call_id": tool_call.id,
                        "name": function_name,
                        "content": tool_output
                    }
                ]
            )
            print("\n[+] AI Agent 最终深度分析报告:")
            print(second_response.choices[0].message.content)
    else:
        print("[-] AI 认为此提问不需要查阅实时行情。")
        print(response_message.content)

if __name__ == "__main__":
    # 模拟用户提问(跨美港两市)
    user_query = "帮我分析一下特斯拉(TSLA.US)最近走势如何?有什么需要注意的技术位置吗?"
    run_agent_workflow(user_query)
3. Agent 真实融合输出样例
用户问题: 帮我分析一下特斯拉(TSLA.US)最近走势如何?有什么需要注意的技术位置吗?

[+] AI 决定调用 QuantDash 数据接口...
[*] 执行函数: get_stock_kline,参数: {'symbol': 'TSLA.US'}

[+] AI Agent 最终深度分析报告:
根据从 QuantDash 获取的特斯拉(TSLA.US)最新前复权 K 线数据:
1. **价格走势**:最近 5 个交易日(截止至 2026-07-20),收盘价呈现稳步走高的态势。最新收盘价为 265.0 美元,相较于 4 天前的 258.5 美元累计上涨了约 2.51%。
2. **成交量表现**:在 7 月 17 日和 20 日,成交量有明显的温和放大,显示买盘动能正在逐步积聚。
3. **技术位置提示**:
   - **下方支撑位**:258.5 - 260.0 美元区间是前期的低位密集交易区,有较强的技术买盘支撑。
   - **阻力位**:建议密切关注 268.0 美元附近。如果能够带量突破该关口,后市有望向 280.0 美元发起上攻。

三、 AI 编程助手专属提示词

如果你希望在自己的项目中扩充 Agent 的功能(比如加入资金流或财务指标),将此 Prompt 喂给 AI:

Role: AI 架构师
Context: 我正在使用 Python 搭建一个基于 DeepSeek 的 Function Calling 智能投研体,数据源使用 QuantDash。
Task: 请帮我扩展上述代码。
Requirements:
1. 在 tools 列表中,增加一个名为 `get_financial_indicators` 的函数,用于查询股票的市盈率 (PE)、市净率 (PB) 和市值数据。
2. 给出详细的 schema 定义描述,确保 LLM 能够精准识别并抽取 `symbol` 参数。

四、 总结与三步走指引

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐