LLM 调用为什么不能像 requests 一样简单?上下文管理就不能自动搞定吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
pmpmp
V2EX    分享创造

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

  •  
  •   pmpmp 1 天前 1190 次点击

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

    项目在这里:https://github.com/zhixiangxue/chak-ai

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

    我自己的几个痛点:

    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 吧https://github.com/zhixiangxue/chak-ai

    欢迎交流,有兴趣的兄弟给我留言哈~

    7 条回复    2025-11-11 10:41:44 +08:00
    raycool
        1
    raycool  
       1 天前
    不错,最近有对接大模型的需求,先 star
    ITisCool
        2
    ITisCool  
       1 天前
    可以支持 tools call 、MCP 么?支持的话更有实用价值
    BeautifulSoap
        3
    BeautifulSoap  
       1 天前
    看了下似乎根本不支持 function call 啊,就是个单纯的包装了下对话上下文管理的 warpper 吗
    这样应用场景似乎不大啊
    pmpmp
        4
    pmpmp  
    OP
       1 天前
    @ITisCool 还没发呢哈,估计就这几天就支持了,有什么需求欢迎随时给我 issue ,哈哈哈,感谢关注
    pmpmp
        5
    pmpmp  
    OP
       1 天前   1
    @BeautifulSoap 还没发呢哈,估计就这几天就支持了,有什么需求欢迎随时给我 issue ,哈哈哈,感谢关注
    pmpmp
        6
    pmpmp  
    OP
       1 天前
    function call 也好、MCP 也好,也是个话题,而且是个很大的话题,demo 貌似都能 work ,一旦想认真用,就一堆问题,这也是让我很烦的点,正在 coding 中,希望能让 fc 或者 mcp 也做到 “不用管”
    ITisCool
        7
    ITisCool  
       23 小时 45 分钟前   1
    @pmpmp #6 是的,做得太多又变成了一个 Chatbot Client 了。一般类似你这个出发点的需求我都是打开 Cherry Studio 来测模型的。但是最近遇到一个本地部署的 LLM ,我需要测试其做 agent 的能力,对方给接口配置了 SSL 自签名证书,搞得 Cherry Studio 请求验证 SSL 失败没法测,我只能用 OpenAI SDK (传入 httpx.Client(verify=False)) 来发请求测试。所以你这个库要是支持 function call 、MCP 就刚好符合我这种测试需求了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5818 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 02:27 PVG 10:27 LAX 18:27 JFK 21:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86