基于 Pi Agent 架构的科创板金融研究工具集。
本项目提供科创板(STAR Market)上市公司的智能研究工具,支持:
- 公司基本信息查询
- 实时股票行情分析
- PDF 研报解析
本项目提供 TypeScript 和 Python 两个版本,满足不同使用场景:
| 版本 | 目录 | 适用场景 | 数据来源 |
|---|---|---|---|
| TypeScript | packages/finance-tools/ |
Pi Agent 集成 | 模拟数据 |
| Python | python-tools/ |
独立使用 / akshare | akshare 真实数据 |
pi-finance-agent/
├── README.md # 本文件
├── IMPLEMENTATION.md # 详细实现文档
│
├── packages/ # TypeScript 版本
│ └── finance-tools/
│ ├── src/
│ │ ├── kcb-company.ts # ⭐ 科创板公司查询
│ │ ├── stock-price.ts # ⭐ 股票价格查询
│ │ ├── pdf-report.ts # ⭐ PDF研报读取
│ │ └── index.ts # 工具导出
│ ├── package.json
│ └── tsconfig.json
│
├── python-tools/ # Python 版本
│ ├── finance_tools/
│ │ ├── kcb_company_tool.py # ⭐ 科创板公司查询
│ │ └── tool_registry.py # 工具注册表
│ ├── examples/
│ │ └── example_kcb_tool.py # 使用示例
│ ├── config/
│ │ └── settings.py # 配置文件
│ ├── main.py # 交互式主程序
│ └── requirements.txt # 依赖列表
│
└── examples/ # TypeScript 示例
├── finance-agent.ts # Agent 集成示例
└── tool-standalone.ts # 独立使用示例
适用于与 Pi Agent 集成使用。
cd packages/finance-tools
npm install
npm run buildimport { Agent } from "@mariozechner/pi-agent-core";
import { financeTools } from "@mariozechner/pi-finance-tools";
const agent = new Agent({
initialState: {
systemPrompt: "你是一个科创板研究专家...",
tools: financeTools,
}
});
await agent.prompt("请分析中芯国际的基本情况");适用于独立使用,基于 akshare 获取真实数据。
cd python-tools
pip install -r requirements.txtfrom finance_tools.kcb_company_tool import get_kcb_company_info
result = get_kcb_company_info("中芯国际")
print(result)cd python-tools
python main.py
# 然后输入命令:
# query 中芯国际 - 查询公司
# search 半导体 - 搜索公司
# demo - 运行演示from finance_tools.tool_registry import create_finance_tool_registry
registry = create_finance_tool_registry()
schemas = registry.get_schemas() # 获取 Pi Agent Tool Schema
result = await registry.execute("get_kcb_company_info", company_name="中芯国际")获取科创板公司基本信息。
参数:
company_name(str): 公司名称或代码
返回:
- 公司全称、行业、上市日期
- 市值、股本信息
- 公司简介、经营范围
- 联系方式
获取股票实时行情。
参数:
stock_code(str): 股票代码
返回:
- 当前价格、涨跌幅
- 成交量、成交额
- 市盈率、市净率
读取 PDF 研报。
参数:
pdf_path(str): PDF 文件路径max_pages(int, optional): 最大页数
返回:
- 研报文本内容
- 提取的关键信息(评级、目标价等)
- TypeScript 版本: 使用模拟数据(便于演示和测试)
- Python 版本: 使用 akshare 库获取真实 A 股数据
// packages/finance-tools/src/new-tool.ts
export function createNewTool(): AgentTool<...> {
return {
name: "new_tool",
label: "新工具",
description: "工具描述...",
parameters: newToolSchema,
execute: async (...) => { ... }
};
}
// 添加到 index.ts
export const financeTools = [
...existingTools,
createNewTool(),
];# python-tools/finance_tools/new_tool.py
def new_tool(param: str) -> Dict:
# 实现工具逻辑
return {...}
# 添加到 tool_registry.py
registry.register(
name="new_tool",
handler=new_tool,
schema={...}
)MIT