Skip to content

feat: LLM Provider 管理、Token 用量追踪与 Python 代码执行工具#8

Merged
robscc merged 1 commit intomainfrom
feat/provider-management-token-tracking
Mar 13, 2026
Merged

feat: LLM Provider 管理、Token 用量追踪与 Python 代码执行工具#8
robscc merged 1 commit intomainfrom
feat/provider-management-token-tracking

Conversation

@robscc
Copy link
Owner

@robscc robscc commented Mar 13, 2026

Summary

  • LLM Provider 管理系统:新增 providers/ 模块(ProviderManager、OpenAIProvider、RetryModel)及 /api/v1/providers REST API,支持多 Provider 配置、api_key 打码、连通性测试、动态模型发现
  • Token 用量追踪:新增 LLMCallLog 模型逐轮记录 token 消耗,PersonalAssistant 自动写日志;新增 GET /sessions/{id}/usage 用量明细 API;Dashboard 统计升级(input_tokens / output_tokens / llm_calls)
  • execute_python_code 工具:在隔离子进程中执行 Python 代码,支持动态 pip install;ChatPage 新增 Python 代码输出渲染组件(行号 + 退出码 + stdout/stderr 分区展示)
  • 内置 skills_data:find-skills / frontend-design / notion-api 开箱即用
  • init.sh:开发环境一键初始化脚本(后端依赖 + 前端依赖 + 冒烟测试)

变更文件

模块 文件 说明
providers agentpal/providers/ (5 files) 新 Provider 管理模块
api api/v1/endpoints/providers.py Provider CRUD + 测试 API
models models/llm_usage.py LLMCallLog ORM 模型
agents agents/personal_assistant.py 每轮写 token 日志
api api/v1/endpoints/session.py /usage 用量明细
api api/v1/endpoints/dashboard.py Dashboard token 统计精确化
tools tools/builtin.py execute_python_code 工具
frontend frontend/src/pages/ChatPage.tsx Python 代码输出组件
tests tests/unit/test_providers/ Provider 单元测试
tests tests/unit/test_cron/test_cron_cli.py cron_cli 工具测试
skills skills_data/ 内置技能数据
scripts init.sh 初始化脚本

Test plan

  • cd backend && .venv/bin/pytest tests/unit/ tests/integration/ -v --tb=short 全部通过
  • 新建 Session,发送消息,确认 llm_call_logs 表有数据写入
  • GET /api/v1/sessions/{id}/usage 返回正确 token 数
  • Dashboard 页面 input_tokens / output_tokens / llm_calls 有统计值
  • GET /api/v1/providers 返回 Provider 列表(api_key 打码)
  • POST /api/v1/providers/{id}/test 测试 Provider 连通性
  • 启用 execute_python_code 工具,让 Agent 执行简单 Python 脚本,ChatPage 正确渲染输出

🤖 Generated with Claude Code

## 核心变更

### LLM Provider 管理系统
- 新增 `agentpal/providers/` 模块:ProviderConfig、ProviderManager、OpenAIProvider、RetryModel
- 新增 `/api/v1/providers` REST API(CRUD + 连通性测试 + 模型发现)
- 支持多 Provider 配置、api_key 打码展示、自定义 Provider 管理

### Token 用量追踪
- 新增 `LLMCallLog` ORM 模型(`llm_call_logs` 表),按 session + call_round 记录用量
- `PersonalAssistant` 流式/非流式对话均自动写 token 日志
- 新增 `GET /api/v1/sessions/{id}/usage` 用量明细 API
- Dashboard 新增 `input_tokens` / `output_tokens` / `llm_calls` 精确统计

### execute_python_code 工具(#10)
- 在隔离子进程中执行 Python 代码,支持动态 `pip install` 依赖
- stdout / stderr 完整捕获,输出超 8000 字自动截断
- ChatPage 新增 Python 代码输出渲染组件(行号 + 退出码 + 输出块)

### 其他
- 内置 skills_data(find-skills / frontend-design / notion-api)开箱即用
- 新增 `init.sh` 开发环境一键初始化脚本
- 新增 Provider 单元测试 & cron_cli 工具测试

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@robscc robscc merged commit b423b63 into main Mar 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant