核心用法
pywayne-llm-chat-bot 是一个面向 OpenAI 兼容 API(含 Ollama 等本地部署)的同步 Python SDK,封装了对话、配置与会话管理三大能力。
基础对话:通过 LLMChat 类实例化后,调用 ask() 进行无状态单轮请求,或 chat() 进行带历史记录的多轮对话。两者均支持 stream=True 开启逐字流式输出,适配实时交互场景。
配置管理:LLMConfig 类集中管理 temperature、max_tokens、top_p 等生成参数,以及 system_prompt 系统角色设定,可通过 to_dict() 快速序列化注入 LLMChat。
会话隔离:ChatManager 提供基于 chat_id 的多实例缓存与生命周期管理,支持按用户/会话维度独立维护对话历史,并可配置 timeout 自动清理过期会话,适合多租户或长连接场景。
显著优点
- API 兼容性强:原生支持 OpenAI 标准接口及 Ollama 等本地方案,迁移成本低。
- 流式体验完整:迭代器式
for token in chat.ask()设计,内存友好且易于嵌入前端。 - 会话管理内建:
ChatManager免除了自建键值存储与过期逻辑的繁琐,开箱即用。 - 配置粒度灵活:全局默认配置与单会话
LLMConfig覆盖并存,兼顾一致性与个性化。
潜在缺点与局限性
- 仅支持同步:未提供异步接口,在高并发服务端场景需配合线程池或
asyncio.to_thread包装。 - 历史存储在内存:
ChatManager基于字典缓存,进程重启或单节点部署外扩时需额外对接 Redis 等持久化层。 - 重试与容错缺失:文档未展示指数退避、网络异常降级等策略,生产环境需自行封装。
- 依赖外部服务:所有功能绑定 OpenAI 格式端点,无法离线运行。
适合人群
- 需要快速原型验证 LLM 对话的 Python 开发者
- 构建多用户聊天机器人、客服系统的中后台工程师
- 在 Ollama/DeepSeek/智谱等 OpenAI 兼容服务间切换的迁移用户
常规风险
- 密钥泄露:
api_key以明文传入,需避免硬编码或日志打印。 - 无输入校验:
ask()/chat()未内置敏感词过滤或 Prompt 注入防护,需上游网关拦截。 - Token 超限:
max_tokens与上下文长度需与服务端模型对齐,否则可能触发截断或报错。 - 会话膨胀:
ChatManager未设默认过期时间,高并发下内存持续增长,建议显式配置timeout并监控。