当前位置: 首页 > article >正文

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

目录

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

http://www.lryc.cn/news/2403835.html

相关文章:

  • 5.1 HarmonyOS NEXT系统级性能调优:内核调度、I/O优化与多线程管理实战
  • react public/index.html文件使用env里面的变量
  • chili3d 笔记17 c++ 编译hlr 带隐藏线工程图
  • 创建一个纯直线组成的字体库
  • 接口不是json的内容能用Jsonpath获取吗,如果不能,我们选用什么方法处理呢?
  • 使用 Docker Compose 从零部署 TeamCity + PostgreSQL(详细新手教程)
  • Go 语言实现高性能 EventBus 事件总线系统(含网络通信、微服务、并发异步实战)
  • Linux进程(中)
  • 【计算机组成原理】计算机硬件的基本组成、详细结构、工作原理
  • npm error Cannot read properties of null (reading ‘matches‘)
  • MVC分层架构模式深入剖析
  • 【方案分享】蓝牙Beacon定位精度优化(包含KF、EKF与UKF卡尔曼滤波算法详解)
  • 新能源汽车热管理核心技术解析:冬季续航提升40%的行业方案
  • LeetCode 239. 滑动窗口最大值(单调队列)
  • 华为云Flexus+DeepSeek征文|DeepSeek-V3/R1开通指南及使用心得
  • 鸿蒙图片缓存(一)
  • 运行示例程序和一些基本操作
  • 学习数字孪生,为你的职业发展开辟新赛道
  • WebRTC源码线程-1
  • python学习打卡day47
  • MySQL中的内置函数
  • Ansible自动化运维全解析:从设计哲学到实战演进
  • YOLOv8n行人检测实战:从数据集准备到模型训练
  • 国标GB28181设备管理软件EasyGBS远程视频监控方案助力高效安全运营
  • 网络寻路--图论
  • LangChain4j 学习教程项目
  • 【Go语言基础【15】】数组:固定长度的连续存储结构
  • 【读论文】U-Net: Convolutional Networks for Biomedical Image Segmentation 卷积神经网络
  • Komiko 视频到视频功能炸裂上线!
  • Linux 文件系统与 I/O 编程核心原理及实践笔记