devinyf / dashscopego

Tongyi Qwen Aliyun Dashscope API Golang implementation, non-official
MIT License
18 stars 5 forks source link

Added FileCacheMgr #5

Closed zhs007 closed 5 months ago

zhs007 commented 5 months ago

加了文件缓存,会将文件内容hash,如果在48小时以内upload过,就直接用上次的url,省掉每次都上传的开销,效率会快很多。

qwen.LoadFileCacheMgr(path.Join("./cfg", "filecache.gob")) defer qwen.SaveFileCacheMgr(path.Join("./cfg", "filecache.gob"))

可以把文件缓存存下来,这样就算服务重启,也依然不会重复上传。

zhs007 commented 5 months ago

好像lint报错,你也可以换 sha256,我个人觉得sha1会快很多,这种简单逻辑没必要sha256

devinyf commented 5 months ago

感谢 🙏

直接 cache 在内存中可能对某些场景不太友好... 比如:

  1. 冗余部署的服务 可能更加倾向于使用 redis 统一存储
  2. 客户端等非持续运行的应用 保存在Local-DB或临时文件 或许会更合适一些

目前考虑应该设计一个通用 interface 方便用户根据实际情况拓展不同的 cache实现: Memory / Redis / Temp-File... 晚几天再更新

zhs007 commented 5 months ago

嗯嗯,是的

devinyf commented 5 months ago

更新好了, 默认启用了内存缓存, 也可以通过 SetUploadCache 切换其它自定义实现

    cli := dashscopego.NewTongyiClient(model, token).
        SetUploadCache(qwen.NewMemoryFileCache()) // 可以通过 UploadCacher 接口 自定义缓存实现 避免重复上传, 默认使用内存缓存

完整example地址: https://github.com/devinyf/dashscopego/blob/main/example/qwen_vl/stream_call.go