目录
- 1、什么是langchainGo
- 2、langchainGo的官方地址
- 3、LangChainGo with OpenAI
- 3-1、前置准备
- 3-2、安装依赖库
- 3-3、新建模型客户端
- 3-4、使用模型进行对话
- 4、总结
1、什么是langchainGo
langchaingo是langchain的go语言实现版本
2、langchainGo的官方地址
官网:[https://tmc.github.io/langchaingo/docs/getting-started/guide-openai][https://tmc.github.io/langchaingo/docs/getting-started/guide-openai]
github:[https://github.com/tmc/langchaingo/tree/main][https://github.com/tmc/langchaingo/tree/main]
3、LangChainGo with OpenAI
3-1、前置准备
-
下载并安装好Go [https://go.dev/doc/install][https://go.dev/doc/install]
-
获取到openAi的key(这里可以使用其他大模型提供的能力,如阿里的百炼平台[百炼的apiKey获取方式][https://bailian.console.aliyun.com/?utm_content=se_1021226628&tab=api#/api/?type=model&url=https%3A%2F%2Fhelp.aliyun.com%2Fdocument_detail%2F2712195.html&renderType=iframe])
-
创建.env文件
这里以百炼的地址和apiKey为例
OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 OPENAI_API_KEY=sk-xxxx //you api key
3-2、安装依赖库
go get github.com/tmc/langchaingo
go get github.com/joho/godotenv
3-3、新建模型客户端
package modelimport ("github.com/joho/godotenv""github.com/tmc/langchaingo/llms/openai""log""os"
)func GetLlm(model string, embeddingModel string) *openai.LLM {if embeddingModel == "" {embeddingModel = "text-embedding-v3"}if model == "" {model = "qwen-max"}// 加载 .env 文件err := godotenv.Load()if err != nil {log.Println("Error loading .env file:", err)}// 读取环境变量baseUrl := os.Getenv("OPENAI_BASE_URL")apiKey := os.Getenv("OPENAI_API_KEY")llm, err := openai.New(openai.WithBaseURL(baseUrl),openai.WithToken(apiKey), openai.WithModel(model),openai.WithEmbeddingModel(embeddingModel))if err != nil {log.Fatal(err)}return llm
}
配置参数和环境变量,创建一个连接到 OpenAI 或阿里云 Qwen 的语言模型实例。
3-4、使用模型进行对话
package mainimport ("context""fmt""github.com/tmc/langchaingo/llms""langchain-go-demo/model""log"
)// 演示使用langchain-go的llms包,调用qwen-max模型,生成文本
func main() {llm := model.GetLlm("qwen-max", "")ctx := context.Background()completion, err := llms.GenerateFromSinglePrompt(ctx, llm, "Hi qwen, write a poem about golang powered AI systems",llms.WithTemperature(0.8),// 流式输出llms.WithStreamingFunc(func(ctx context.Context, chunk []byte) error {fmt.Print(string(chunk))return nil}),)if err != nil {log.Fatal(err)}_ = completion
}
上面的代码通过LangChain-Go 库调用 Qwen-Max 模型 生成诗歌。这里使用了流式输出的,
chunk:每次模型生成的新文本片段。
4、总结
LangChainGo是LangChain的Go语言实现,本文演示如果通过LangChain-Go 与大模型进行交互。