把 Python 项目接入股票数据
QVeris 为 Python 应用提供发现和调用股票数据工具的入口。可以先查询一只股票,保存 JSON 响应,再根据返回字段生成结果表。相同流程后续可用于 Notebook、定时研究脚本或自选股看板的后端。
这里以 QVeris 中的Finnhub 股票报价能力为例:检查路径、提交一个代码、保留响应供核验。直接请求数据无需先选择模型,也不需要先搭建完整的 AI Agent。
QVeris 文档也提供 SDK 接入路径。首次采用 HTTP 请求,可以集中看到鉴权方式、参数对象和返回结构,方便排查问题。
准备密钥与 Python 环境
在 QVeris 账户中创建 API Key,通过进程环境变量 QVERIS_API_KEY 提供给脚本。把密钥保存在本地环境或服务端密钥管理中。在项目虚拟环境安装 requests,再把示例保存为 stock_quote.py。
python -m pip install requests
python stock_quote.py AAPL脚本在运行时读取密钥,示例本身不包含凭据。请在服务端或自己的电脑运行,不要把账户 API Key 放进公开浏览器页面。执行前查看工具详情与当前调用价格,数据执行可能消耗积分。
先检查参数,再发起一次请求
下面的示例会确认所选路径仍支持字符串类型的 symbol,且没有新增必填字段,然后才发起请求。脚本保存完整执行结果,不假设各供应商都返回相同的报价对象。展开代码可复制完整脚本。
展开完整 Python 示例
"""Inspect and execute one stock quote route. Running this may use QVeris credits."""
import json
import os
import sys
from pathlib import Path
import requests
BASE = "https://qveris.ai/api/v1"
TOOL = "finnhub_io_api.stock.quote"
def post(path, body, key, query=None):
response = requests.post(
BASE + path,
headers={"Authorization": "Bearer " + key},
params=query,
json=body,
timeout=5,
)
response.raise_for_status()
payload = response.json()
if not isinstance(payload, dict) or payload.get("success") is False:
raise ValueError("QVeris returned an unsuccessful or unexpected response")
return payload
def main():
key = os.environ["QVERIS_API_KEY"]
symbol = sys.argv[1] if len(sys.argv) > 1 else "AAPL"
inspected = post("/tools/by-ids", {"tool_ids": [TOOL]}, key)
match = next((t for t in inspected.get("results", []) if t.get("tool_id") == TOOL), None)
if not match:
raise ValueError("Selected route is unavailable; inspect another route")
fields = match.get("params") or []
if not any(p.get("name") == "symbol" and p.get("type") == "string" for p in fields):
raise ValueError("The symbol contract changed; review the tool before calling")
if any(p.get("required") and p.get("name") != "symbol" for p in fields):
raise ValueError("New required parameters need review")
result = post("/tools/execute", {
"parameters": {"symbol": symbol}, "max_response_size": 20480
}, key, {"tool_id": TOOL})
if result.get("success") is not True or result.get("result") is None:
raise ValueError("Execution did not return a result")
Path("quote-response.json").write_text(json.dumps(result, indent=2), encoding="utf-8")
print("Saved quote-response.json. Validate provider data and timestamps before display.")
if __name__ == "__main__":
try:
main()
except (KeyError, ValueError, OSError, requests.RequestException) as error:
# Avoid printing authorization headers or complete provider responses.
raise SystemExit("Request stopped: " + type(error).__name__) from None
示例使用 Requests 的五秒超时配置,遇到 HTTP、JSON 或执行错误时停止。Requests 的超时约束连接与读取等待,不是严格的总运行时长保证;参见Requests 超时说明(英文原文)。因此工具可用但响应较慢时,示例也可能超时。
自动化之前,先读懂保存的响应
打开 quote-response.json,在执行结果中定位供应商数据。确认上游响应有效、标的匹配,而且包含有意义的观察时间。外层成功标志只能描述调用过程,不能单独证明供应商返回了可用行情。
空对象不能被转换成零美元股票,截断响应也不能当作完整数据集。股票 API JSON 文章说明了如何区分执行元信息与应用自己的标准化结构。
开发过程中应保留原始响应文件。派生表格方便用户阅读,原对象则有助于定位字段改名、币种缺失或上游错误格式变化。
按实际需求扩展下一个数据任务
常见问题
这段脚本是实测行情报告吗?
不是。这是基于已检查工具参数编写的接入示例,实际数据、可用性和费用取决于本次执行及账户权限。
运行这个示例需要大模型密钥吗?
不需要。这里直接调用 QVeris 数据接口;只有另外搭建模型驱动的 Agent 流程时,才涉及模型密钥。
检查报价工具并生成 Python 接入清单
点击后将打开已预填的 QVeris 任务,先检查 AAPL 报价参数,并在可调用时获取一次结果。输出会包含返回字段、来源时间,以及环境变量、错误处理和响应保存清单,不会要求输出 API Key。
请用 QVeris 检查 AAPL 股票报价工具,说明当前参数定义;可调用时获取一次报价,列出来源时间和实际返回字段。补充简短的 Python 接入清单,包含环境变量、HTTP 错误、上游错误及响应保存方式。不要输出任何 API Key,请用中文回答。
