AI聊天服务

一个基于FastAPI的AI聊天服务,集成了OpenAI API,用于信息检索和合成任务。

  • by mikhailstasyuk
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mikhailstasyuk/umbc-mcp

使用说明

CONFLUENCE-RAG-人工智能聊天服务

一个强大的基于FastAPI的聊天服务,与OpenAI的API集成,专为信息检索和合成任务而设计。

特性

  • OpenAI集成:与OpenAI的聊天功能API无缝集成
  • 动态系统提示:带有项目特定说明的上下文感知提示
  • 全面的错误处理:适用于所有OpenAI API场景的强大错误处理
  • 请求验证:消息内容和结构的输入验证
  • 无状态设计:没有会话持久性的RESTful API

快速开始

先决条件

  • Python 3.12+
  • OpenAI API密钥
  • uv包管理器(推荐)

安装

  1. 克隆存储库:
git clone https://github.com/mikhailstasyuk/umbc-mcp.git
cd umbc-mcp
  1. 安装依赖项:
uv sync
  1. 设置环境变量:
cp .env.example .env
# Edit .env and add your OPENAI_API_KEY
  1. 运行应用程序:
uv run fastapi dev src/app/main.py

API将于 http://localhost:8000

API使用

健康检查

curl http://localhost:8000/health

答复:

{"status": "healthy"}

聊天端点

向发送POST请求 /chat 与您的对话:

curl -X POST "http://localhost:8000/chat" \
     -H "Content-Type: application/json" \
     -d '{
       "model": "gpt-4",
       "messages": [
         {"role": "user", "content": "What is machine learning?"}
       ]
     }'

请求格式

{
  "model": "gpt-4",
  "messages": [
    {
      "role": "user",
      "content": "Your message here"
    }
  ]
}

响应格式

{
  "message": "AI response here"
}

错误响应

API针对不同的错误场景返回适当的HTTP状态代码:

  • 401:身份验证失败(API密钥无效)
  • 404:未找到型号
  • 422:无效请求(空消息、超大内容)
  • 429:超出费率限制
  • 500:内部服务器错误
  • 502:连接错误
  • 503:服务不可用(缺少配置)

配置

环境变量

变量 描述 默认值
OPENAI_API_KEY 您的OpenAI API密钥 必需
PROJECT_NAME 项目名称 “当前项目”
PROJECT_DESCRIPTION 项目描述 “当前项目描述”
BASE_SYSTEM_PROMPT AI基础系统提示 专业检索提示
CHAT_HISTORY_LIMIT 上下文中要包含的最大消息数 20
MAX_CHAT_ITERATIONS 最大检索次数 5
RETRIEVAL_TOP_K 要检索的顶级结果 10
MAX_MESSAGE_LENGTH 每条消息的最大字符数 10000

发展

运行测试

# Run all tests
uv run pytest

# Run specific test file
uv run pytest tests/unit/test_chat_service.py

项目结构

src/
├── app/
│   ├── chat/
│   │   ├── dependencies.py    # Dependency injection
│   │   ├── exceptions.py      # Custom exceptions
│   │   ├── prompts.py         # System prompt generation
│   │   ├── router.py          # API endpoints
│   │   ├── schemas.py         # Pydantic models
│   │   └── service.py         # Business logic
│   ├── config.py              # Application settings
│   ├── llm_providers/
│   │   └── client.py          # OpenAI client setup
│   └── main.py                # FastAPI application
tests/
├── unit/
│   ├── chat/
│   ├── llm_providers/
│   └── routers/
└── conftest.py                # Test fixtures

API文档

运行应用程序时,请访问 http://localhost:8000/docs 用于交互式Swagger文档。