LangChainGo入门指南:Go语言实现与OpenAI/Qwen模型集成实战

发布于:2025-06-09 ⋅ 阅读:(16) ⋅ 点赞:(0)

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 model

import (
	"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 main

import (
	"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 与大模型进行交互。