AI任务处理API

一个基于FastAPI的单路由应用,处理多种AI任务,包括问答、图像生成、平台内容生成,并提供JWT认证、MCP工具调用和交易回测功能。

  • by S18-Niloy
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 s18-niloy/fastapi

使用说明

快速 API

一个处理多个AI任务的单路由FastAPI应用程序,包括可选的JWT身份验证,集成了用于工具调用的最小MCP服务器/客户端,并附带了基本的交易回溯测试实用程序。在macOS上本地测试。

特性

  • 一条路线: POST /ai-task 随着 task 体内: qa, latest, image, platform_content
  • 代理人问答: 调用OpenAI聊天模型(DEFAULT_MODEL)
  • 最新答案: 将Q&A/图像/平台输出存储到SQLite,并获取最新的
  • 图像生成: 使用OpenAI图像返回base64编码的PNG(IMAGE_MODEL)
  • 平台内容: 脸书、领英、推特/X、Instagram、TikTok、Reddit、Medium风格
  • JWT身份验证(可选但已实现): 无限令牌(无exp);使用 /login 获得
  • MCP集成: 最小本地MCP服务器 upper(text) 演示工具+客户端
  • 反测试套件: 输出CSV、图表和指标的简单SMA交叉脚本

(macOS+VS代码)

1) 克隆

cd softvence-ai-task
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# At .env set OPENAI_API_KEY=...

2) 运行API

./run.sh
# or:
uvicorn app.main:app --reload --port 8000

打开http://127.0.0.1:8000/docs

3) 认证

  1. 击打 POST /login 使用任何用户名/密码(演示)。复制 access_token.
  2. 对于 POST /ai-task 添加标题: Authorization: Bearer <token>.

4) 请求示例

问答

curl -X POST http://127.0.0.1:8000/ai-task   -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json"   -d '{"task":"qa","prompt":"What is MCP in one sentence?"}'

最新

curl -X POST http://127.0.0.1:8000/ai-task   -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json"   -d '{"task":"latest"}'

图像

curl -X POST http://127.0.0.1:8000/ai-task   -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json"   -d '{"task":"image","prompt":"A minimalist robot mascot, vector style"}'

响应包括 image_b64 --在浏览器中渲染或保存到文件。

平台内容

curl -X POST http://127.0.0.1:8000/ai-task   -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json"   -d '{"task":"platform_content","platform":"linkedin","prompt":"Announce our new AI trading API beta"}'

MCP集成

这个仓库包括一个使用官方Python SDK的小型MCP服务器和客户端。

  • 服务器: app/mcp_server.py 公开单个工具 upper(text:str).
  • 客户: app/mcp_client.py 通过stdio连接并呼叫 upper.
  • FastAPI 的 问答 路径将 尝试 调用MCP工具并预先添加提示。

文件夹结构

app/
  auth.py          # JWT helpers
  db.py            # SQLite models + init
  main.py          # FastAPI entry — single /ai-task route
  mcp_client.py    # Minimal MCP client
  mcp_server.py    # Minimal MCP server with 'upper' tool
  schemas.py       # Pydantic models
backtest/
  sma_backtest.py  # SMA strategy CSV, chart, metrics
tests/
  test_api.py
Dockerfile
render.yaml
requirements.txt
run.sh
.env.example

短文:方法、风险控制和假设

方法

  • 单路API设计: 一个端点 POST /ai-task 用打字 task 现场(qa, latest, image, platform_content).这使客户端合约保持简单和可扩展。
  • 框架和结构: FastAPI带有Pydantic v2模型用于I/O验证,SQLAlchemy(异步)用于持久化,以及一个小而可读的模块布局(app/).
  • 认证: 可选JWT通过 /login。代币包括 sub 和 iat (默认情况下没有到期时间来匹配规格);中间件强制执行 Authorization: Bearer <token>.
  • 问答和内容生成: OpenAI聊天模型 qa 和 platform_content平台输出使用风格图(LinkedIn、Facebook、X/Twitter、Instagram、TikTok、Reddit、Medium)来定制音调/长度。
  • 图像生成: OpenAI图像;回报 Base64 (默认为可移植)。通过将图像持久化,可以轻松地切换到URL输出 /static.
  • 状态和“最新”: 全部成功 qa, image,以及 platform_content 结果保存到SQLite; latest 返回最近的一行。
  • MCP集成(可扩展性): 带演示的最小MCP服务器 upper(text) 工具和客户端; qa path首先尝试工具调用,以显示如何组合外部工具。
  • 运营: Uvicorn用于本地开发,Dockerfile用于容器运行, render.yaml 免费的Render部署。包括测试和回溯测试实用程序。

回测法(SMA交叉)

  • 数据和转换: 每日OHLCV(通过 yfinance 当地)。计算 SMA50 和 SMA200;放弃最初的热身行。
  • 信号: 很久的时候 SMA50 > SMA200,否则平坦。应用 下一次酒吧执行 (signal.shift(1))避免向前看。
  • 回报与权益: 每日退货= pct_change;战略回报= ret * shifted_signal;累计权益= (1 + strategy).
  • 韵律学: 复合年增长率(252个交易日)、年化波动率和夏普(无无风险利率,简单均值/标准公式)。CSV+PNG权益曲线+JSON指标用于可重复性。

风险控制

  • 前瞻性预防: 信号滞后一条(shift(1)).
  • 预热处理: 删除行,直到定义了两个SMA,以避免有偏见的早期信号。
  • 确定性人工制品: 保存CSV、图表和指标,以便进行审计和重新计算。
  • 关注点分离: 战略逻辑是纯粹的;除了工件写入之外,没有交易引擎的副作用(易于单元测试)。
  • 优雅的失败路径: 数据缺口由以下人员处理 dropna运行时错误显而易见。

假设和限制

  • 无摩擦市场: 无佣金、费用或滑点;近距离填充。(可以通过减去成本来添加 position 变化。)
  • 可用性和流动性: 假设您可以在没有影响或部分填充的情况下交易所需的大小。
  • 数据质量: 雅虎数据足以用于演示目的;生产应该使用经过审查的供应商和公司行为检查。
  • 无风险利率: Sharpe为了简单起见使用0%射频;可以调整。
  • JWT到期日: 根据规范偏好,代币是不确定的;生产应增加 exp、轮换和撤销列表(如果需要)。
  • 模型输出: LLM内容可能因运行而异;系统提示和温度的选择是为了一致性,而不是确定性。

再现性说明

  • API uvicorn app.main:app --reload --port 8000;使用 /docs 用于交互式测试。
  • 反向测试 : python backtest/sma_backtest.py AAPL (在下面写入CSV/PNG/JSON backtest/results/).
  • 环境: Pin版本 requirements.txt; .env 持有 OPENAI_API_KEY, JWT_SECRET.

潜在改进

  • 添加 交易成本 和 仓位 (全面定位)。
  • 执行 JWT到期 并刷新流程。
  • 从以下位置提供图像 /static 并返回 网址 默认情况下。
  • CI管道(棉绒、类型检查、测试)+容器扫描。
  • 扩展MCP工具,用于数据检索、合规性检查或自定义检索增强生成。

链接

https://softvence-ai-task-gbsh.onrender.com/docs