Go to file
lids 61d2974c78 git_mcp_server 2026-05-08 14:47:03 +08:00
app git_mcp_server 2026-05-08 10:55:37 +08:00
git_mcp_server git_mcp_server 2026-05-08 14:47:03 +08:00
static 首页web入口暴露 2026-05-07 16:33:54 +08:00
.env 工程提交 2026-05-07 15:51:23 +08:00
.env.example 工程提交 2026-05-07 15:51:23 +08:00
.gitignore gitignore 2026-05-07 15:56:48 +08:00
README.md 工程提交 2026-05-07 15:51:23 +08:00
requirements.txt git_mcp_server 2026-05-08 10:55:37 +08:00
run.py 工程提交 2026-05-07 15:51:23 +08:00
run_debug.py 工程提交 2026-05-07 15:51:23 +08:00
run_dev.py 工程提交 2026-05-07 15:51:23 +08:00

README.md

AI FastAPI Demo

一个基于 FastAPI 的 AI 调用示例工程,支持对话和工具调用。

功能特性

  • AI 对话接口: 输入一段话,返回 AI 的回复
  • 工具调用: AI 可以调用工具(如获取当前时间)来回答问题
  • 获取当前时间: 提供直接获取当前时间的接口

项目结构

ai_fastapi_project/
├── app/
│   ├── __init__.py
│   ├── main.py              # FastAPI 主应用
│   ├── config.py            # 配置管理
│   ├── api/
│   │   ├── __init__.py
│   │   └── chat.py          # API 路由
│   ├── services/
│   │   ├── __init__.py
│   │   └── ai_service.py    # AI 服务封装
│   └── tools/
│       ├── __init__.py
│       └── time_tool.py     # 时间工具
├── requirements.txt         # 依赖列表
├── .env.example            # 环境变量示例
├── run.py                  # 启动脚本
└── README.md               # 说明文档

快速开始

1. 安装依赖

cd ai_fastapi_project
pip install -r requirements.txt

2. 配置环境变量

复制 .env.example.env 并填写您的 OpenAI API Key:

cp .env.example .env

编辑 .env 文件:

OPENAI_API_KEY=your_actual_api_key_here

3. 启动服务

根据您的使用场景选择合适的启动方式:

方式 1: 普通运行(推荐)

python run.py

方式 2: PyCharm 调试模式

python run_debug.py

或在 PyCharm 中右键 run_debug.py → Debug 'run_debug'

方式 3: 开发模式(带热重载)

python run_dev.py

代码修改后自动重载,适合开发调试

方式 4: 命令行启动

python -m uvicorn app.main:app --host 0.0.0.0 --port 8000

服务将在 http://0.0.0.0:8000 启动。

4. 访问 API 文档

启动服务后,访问以下地址查看 API 文档:

API 接口说明

1. AI 对话接口

POST /api/v1/chat

请求示例:

{
  "message": "你好,请介绍一下自己",
  "system_prompt": "你是一个友好的AI助手",
  "history": []
}

响应示例:

{
  "success": true,
  "message": "对话成功",
  "response": "你好我是一个AI助手..."
}

2. 带工具调用的 AI 对话接口

POST /api/v1/chat-with-tools

AI 可以调用工具(如获取当前时间)来回答问题。

请求示例:

{
  "message": "现在几点了?"
}

响应示例:

{
  "success": true,
  "message": "对话成功",
  "response": "现在是2026年4月27日 15:30:45星期一。"
}

3. 获取当前时间接口

GET /api/v1/time

直接获取当前时间信息。

响应示例:

{
  "success": true,
  "data": {
    "current_time": "2026-04-27 15:30:45",
    "date": "2026-04-27",
    "time": "15:30:45",
    "year": 2026,
    "month": 4,
    "day": 27,
    "hour": 15,
    "minute": 30,
    "second": 45,
    "weekday": "Monday",
    "weekday_cn": "星期一"
  }
}

使用示例

Python 调用示例

import httpx
import asyncio

async def chat_with_ai():
    async with httpx.AsyncClient() as client:
        # 普通对话
        response = await client.post(
            "http://localhost:8000/api/v1/chat",
            json={"message": "你好"}
        )
        print(response.json())
        
        # 带工具调用的对话
        response = await client.post(
            "http://localhost:8000/api/v1/chat-with-tools",
            json={"message": "现在几点了?"}
        )
        print(response.json())
        
        # 获取时间
        response = await client.get("http://localhost:8000/api/v1/time")
        print(response.json())

asyncio.run(chat_with_ai())

cURL 调用示例

# 普通对话
curl -X POST "http://localhost:8000/api/v1/chat" \
  -H "Content-Type: application/json" \
  -d '{"message": "你好"}'

# 带工具调用的对话
curl -X POST "http://localhost:8000/api/v1/chat-with-tools" \
  -H "Content-Type: application/json" \
  -d '{"message": "现在几点了?"}'

# 获取时间
curl -X GET "http://localhost:8000/api/v1/time"

扩展工具

要添加新的工具,请在 app/tools/time_tool.py 中:

  1. 定义工具函数
  2. 定义工具的 OpenAI function calling schema
  3. AVAILABLE_TOOLS 字典中注册工具

示例:

def my_new_tool(param1: str) -> Dict[str, Any]:
    """新工具函数"""
    return {"success": True, "data": "result"}

def my_new_tool_schema() -> Dict[str, Any]:
    """工具 schema"""
    return {
        "type": "function",
        "function": {
            "name": "my_new_tool",
            "description": "工具描述",
            "parameters": {
                "type": "object",
                "properties": {
                    "param1": {"type": "string", "description": "参数描述"}
                },
                "required": ["param1"]
            }
        }
    }

# 注册工具
AVAILABLE_TOOLS["my_new_tool"] = {
    "function": my_new_tool,
    "schema": my_new_tool_schema
}

技术栈

  • FastAPI: 现代、快速的 Web 框架
  • OpenAI: AI 模型调用
  • Pydantic: 数据验证和设置管理
  • Uvicorn: ASGI 服务器

许可证

MIT License