Skip to content

Latest commit

 

History

History
28 lines (25 loc) · 1.46 KB

File metadata and controls

28 lines (25 loc) · 1.46 KB

项目目标

  • 创建一个web版AI大模型聊天机器人,不需要自己实现大模型API,只需要调用传入的API即可
  • 支持通过环境变量或配置文件(config.yaml)传入自定义的API_KEY, MODEL_ID, BASE_URL
  • 支持配置多个大模型API,在页面中可切换选择
  • 每个用户的会话状态完全隔离(模型选择、记忆轮数、系统提示词、思考能力设置)
  • 在页面中允许用户修改聊天机器人能够记住的对话轮数
  • 如果调用的大模型API返回内容包含思考过程,要能够显示思考内容
  • 编写Dockerfile,因为最终要能打包成Docker镜像

技术栈要求

  • 使用uv进行Python包管理
  • 使用Python 3.12
  • 使用Gradio6创建聊天机器人
  • 使用openai的SDK

代码规范

  • Python代码要使用类型注解
  • 使用TypedDict定义配置和状态的数据结构
  • 函数要有清晰的docstring
  • 配置加载要有验证机制,配置错误时给出友好提示并退出

架构设计

  • 配置系统:优先读取config.yaml,不存在时回退到环境变量
  • 多模型支持:config.yaml可配置多个模型,页面下拉框切换
  • 用户会话隔离:使用gr.State存储每个用户的独立状态
  • 客户端缓存:按model_id缓存OpenAI客户端,避免重复创建
  • 并发控制:使用Gradio队列,支持5个并发对话
  • 异常处理:细化API错误类型(认证失败、限流、服务异常),提供中文错误提示