Yuan's LLM Chat Bot 是一个基于 Streamlit 和 Claude AI(Haiku 模型)构建的轻量级、用户友好的聊天机器人应用。该项目展示了如何创建一个具有对话历史、API 密钥管理和速率限制的交互式聊天界面。
- 💬 交互式聊天界面:由 Streamlit 驱动的简洁直观的聊天 UI
- 🔑 灵活的 API 密钥管理:支持自定义 API 密钥或默认配置
- 📝 对话历史记录:保留最近 10 条消息作为上下文
- ⏱️ 速率限制:内置速率限制(请求间隔 1 秒)防止 API 滥用
- 🎨 Markdown 支持:响应内容支持富文本格式,包括代码块、列表和内联代码
- 🕒 时间戳显示:为每条消息显示时间戳,便于追踪对话
- 🐳 Docker 支持:通过 Docker 容器化轻松部署
- ⚡ Token 高效:使用 Claude 3 Haiku 模型(可更改)实现经济高效的对话
- Python 3.9+
- Anthropic API 密钥(在此获取)
-
克隆仓库
git clone https://github.com/geekie-yuan/chatBot cd chatBot -
安装依赖
pip install -r requirements.txt
-
运行应用
streamlit run claude_chat.py
-
打开浏览器
访问
http://localhost:8501
-
构建 Docker 镜像
docker build -t claude-chatbot . -
运行容器
docker run -p 8501:8501 claude-chatbot
-
访问应用
在浏览器中打开
http://localhost:8501
应用支持两种配置 API 密钥的方式:
- 通过界面(推荐):启动应用后在侧边栏输入你的 API 密钥
- 默认密钥:修改
claude_chat.py中的DEFAULT_API_KEY(第 34 行)
⚠️ 注意:确保你的 API 密钥以sk-ant-api开头以保证正常功能。
你可以在 claude_chat.py 中自定义以下参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
MIN_TIME_BETWEEN_REQUESTS |
速率限制间隔 | 1 秒 |
HISTORY_LENGTH |
保留在上下文中的消息数量 | 10 条 |
INSTRUCTIONS |
Claude 行为的系统提示词 | 见代码 |
max_tokens |
每次响应的最大 token 数 | 2000 |
chatBot/
├── claude_chat.py # 主应用程序文件
├── requirements.txt # Python 依赖项
├── Dockerfile # Docker 配置文件
├── .streamlit/ # Streamlit 配置目录
├── README.md # 项目文档(中文)
└── README_EN.md # 项目文档(英文)
- Streamlit - 数据应用的 Web 框架
- Anthropic Claude API - AI 语言模型(Haiku)
- Python 3.9+ - 编程语言
- Docker - 容器化(可选)
- 首次对话:机器人会自我介绍并提及 token 限制
- 清空历史:刷新页面以开始新对话
- 速率限制:消息之间至少等待 1 秒以避免速率限制警告
- 上下文窗口:机器人会记住最近 10 条消息作为上下文
| 问题 | 解决方案 |
|---|---|
| API 密钥错误 | 验证你的 API 密钥格式(应以 sk-ant-api 开头) |
| 连接超时 | 检查你的网络连接和 API 密钥有效性 |
| 速率限制警告 | 在发送下一条消息前等待指定时间 |
| Docker 健康检查失败 | 确保端口 8501 未被其他应用占用 |
欢迎贡献!请随时提交 Pull Request。
- Fork 本仓库
- 创建你的特性分支 (
git checkout -b feature/AmazingFeature) - 提交你的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个 Pull Request
本项目采用 MIT 许可证 开源。
Yuan
- 使用 Streamlit 构建
- 灵感来自于对简单、易用的 AI 聊天界面的需求
⭐ 如果这个项目对你有帮助,请给它一个星标!
Made with ❤️ by Yuan
