# go-easy-llm **Repository Path**: ghostelement/go-easy-llm ## Basic Information - **Project Name**: go-easy-llm - **Description**: No description available - **Primary Language**: Go - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-27 - **Last Updated**: 2025-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
一个满足你调用多种大模型API的轮子
不使用第三方包,直接请求第三方API,无须担心性能问题
也可以轻松接入自研的大模型,让你更加专注于实际业务开发
## 特点 1. 支持目前市面多家第三方大模型 2. 一套写法兼容所有平台 3. 简单配置即可灵活使用第三方 4. 更多等你改进... ## 已支持的第三方 - [火山引擎 豆包](https://www.volcengine.com/docs/82379/1099522) - 自定义配置 `globalParams := new(chatmodule.DouBaoParameters)` 按需设置参数 - [百度 千帆](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Fm2vrveyu) - 自定义配置 `globalParams := new(chatmodule.QianFanParameters)` 按需设置参数 - [OpenAI ChatGPT](https://platform.openai.com/docs/overview) - 自定义配置 `globalParams := new(chatmodule.GPTParameters)` 按需设置参数 - [阿里 通义千问](https://help.aliyun.com/zh/model-studio/developer-reference/tongyi-qianwen) - 自定义配置 `globalParams := new(chatmodule.QWenParameters)` 按需设置参数 - [腾讯 混元](https://cloud.tencent.com/document/api/1729/105701) - 自定义配置 `globalParams := new(chatmodule.HunYuanParameters)` 按需设置参数 - 腾讯官方建议使用默认参数,所以可不设置该参数 - 腾讯使用`secretId`、`secretKey`进行鉴权,所以需要使用`DefaultConfigWithSecret()`添加配置 ## 当前go版本 - go 1.22 ## 安装 > 由于更多第三方API正在更新中, 所以后续将暂时不更新tag了, 暂时只更新main分支 ```shell go get -u gitee.com/ghostelement/go-easy-llm@main ``` ## 使用 1. 添加你自己的配置 ```go config := easyllm.DefaultConfig("your-token", easyai.ChatTypeQWen) // 第一个参数是你的token, 第二个参数是你的大模型类型 // 可用的大模型, 通过easyai.ChatType*** 获取 ``` > 如果需要代理请求 > > 代理为空时与 `DefaultConfig()` 一样, 目的是本地使用代理, 线上无代理时不必更新代码 ```go config := easyllm.DefaultConfigWithProxy("your-token", easyai.ChatTypeQWen, "your-proxy-url") ``` > 如果使用secretId、secretKey ```go config := easyllm.DefaultConfigWithSecret("your-secretId", "your-secretKey", easyai.ChatTypeHunYuan) ``` 2. 创建 `Chat` 客户端 ```go client := easyllm.NewChatClient(config) ``` > 创建客户端可以自定义全局配置 ```go client := easyllm.NewChatClient(config).SetGlobalParams(globalParams) // 或 client.SetCustomParams(globalParams) // 两个方法的最终效果都是一样的,设置一个全局的参数 ``` 3. 调用 `Chat` 模式大模型 > 一次性回复 `NormalChat` ```go resp, reply, err := client.NormalChat(context.Background(), &easyai.ChatRequest{ Model: "model", Message: "请介绍一下自己", }) // resp 为定义的通用类型, `easyai.ChatResponse` // reply 为大模型返回的文本 ``` > 流式回复 `StreamChat` ```go resp, err := client.StreamChat(context.Background(), &easyai.ChatRequest{ Model: "model", Message: "介绍一下你自己", }) for content := range resp { fmt.Println(content) } ``` ## 说明 1. `ChatRequest.Tips`:提示词,用于引导模型生成更符合要求的答案 > 你也可以把这个 Tips 放在 `globalParams` 参数中,全局生效 2. 第一次会话时,`chatmodule.ChatRequest` 会返回一个 `SessionId`,对于同一个会话,下次请求时需要传入这个 `SessionId` > 如果同一个会话,下次请求时没有传入这个 `SessionId`,那么将会视为是新的会话,`SessionId` 会被重置 3. 当你的服务是流式响应,且业务允许用户主动停止响应时,你可以使用 `client.Stop()` 来终止大模型的输出,终止的参数是上一步返回的 `SessionId` > 示例可以在 [豆包测试用例](./unitest/doubao_test.go) 中、[混元测试用例](./unitest/hunyuan_test.go) 中查看 4. 目前只支持 `chat` 模式,绘画等功能将在后续完善 ## 示例 1. 在unitest目录下有示例代码