目錄
- 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 與大模型進行交互。