LLM调用为什么不能像requests一样简单?上下文管理就不能自动搞定吗?

33 阅读2分钟

兄弟们,我今天在github上发了一个库 —— chak, 极简风格连接全球主流模型,重点是 —— 可以自动管理上下文,确实方便

项目在这里:github.com/zhixiangxue…

image.png

说说我为啥要写这个库哈~

我自己的几个痛点:

  1. OpenAI的API很方便,但上下文得自己管 每次对话一长,自己算token、截断历史、写策略...重复劳动,烦。
  2. 虽然都支持OpenAI API,但各家文档翻起来也烦 想用DeepSeek?翻文档找base_url和model名。想用百炼?火山?腾讯云?再翻一遍文档。切换模型?又得改配置、查参数。多数时候我只是想快速验证个想法,不想在文档里跳来跳去,烦。
  3. 虽然有one-api、OpenRouter这种聚合方案 但要自己部署服务、配置路由、管理密钥...我就想写个脚本测试模型,不想搞运维,烦。
  4. 想要个本地网关?自己搭又麻烦 有时候就想在本地起个服务,快速测试不同厂商的模型,最好还有个UI能直接对话。但现有方案要么配置复杂,要么功能太重,烦。

所以我撸了个库,叫 chak。

我的目标特别简单:能不能搞一个像requests一样简单的LLM客户端?

  • requests几行代码就能发HTTP请求
  • chak几行代码就能和全球任意LLM对话
  • 不要花里胡哨的东西,开箱即用,上下文自动管理
  • 10分钟搞不定都算我失败了

看代码就懂了:

 pip install chakpy[all]
 
 import chak
​
 # 就这么简单,像requests.get()一样直观
 conv = chak.Conversation("deepseek/deepseek-chat", api_key="your_key")
 print(conv.send("介绍一下Python装饰器").content)
​
 # 继续聊,一直聊,上下文自动帮你管
 print(conv.send("那装饰器用类怎么实现?").content)
​
 # 换个模型?改一行就行
 conv2 = chak.Conversation("openai/gpt-4o-mini", api_key="your_key")

它不是要取代OpenAI SDK或one-api,而是:

  • OpenAI SDK: 功能强大,但上下文、重试、格式转换都得自己写
  • one-api: 功能齐全,但得自己部署服务、配置路由、管理密钥
  • chak: 开箱即用,import就能用,上下文自动管理,配置零负担

上下文管理?内置FIFO、总结、LRU三种策略,自动触发。 多家供应商?provider/model统一格式,支持18+家。 复杂配置?不存在的,api_key一给就能用。 本地网关?chak.serve()一行代码,内置对话界面,1分钟就能和不同厂商模型对话。

如果你也:

  • 烦手动管理上下文
  • 烦翻各家文档找配置
  • 烦部署和配置复杂的网关服务
  • 想快速搭个本地网关测试模型

可以试试。纯粹是解决自己的痛点,希望能帮到有同样困扰的人。

觉得有用?给个Star吧 ⭐ → github.com/zhixiangxue…