[langchaingo] 智谱GLM-4在线模型体验

简介: 本文介绍如何使用Go语言版的Langchain框架——langchaingo,结合清华大学KEG实验室开发的GLM-4模型,在本地运行AI项目。GLM-4是一个先进的自然语言处理模型,支持多种任务。通过智谱AI开放平台注册可获1000w token用于测试。文章展示了langchaingo的基本配置、构建聊天内容及生成回复的过程,并简要总结了项目的现状和未来更新计划。

今天我们初次体验大名鼎鼎的人工智能开源框架 langchain 的Go语言版 langchaingo。本文将初步介绍基于智谱的AI开放平台,通过 GLM-4 模型运行本地 langchaingo 项目。

GLM-4模型介绍

GLM-4(General Language Modeling-4)模型是一个先进的自然语言处理模型,它属于GLM系列模型,这个系列模型是由清华大学知识工程实验室(KEG)提出的。GLM模型结合了BERT和GPT的优势,旨在处理多种语言任务,包括但不限于文本分类、序列标注、自然语言推理、机器翻译、文本生成等。

此外,GLM-4模型在注册账号后,会赠送 500w token用于测试使用。实名认证成功后,

image.png

会再赠送500w token用于测试。

langchaingo 介绍

根据官方介绍,LangchainGo 是 LangChain 的 Go 语言的版本。目前社区非常活跃,这篇文章将会介绍在本地通过 Go 语言环境进行 langchaingo 项目的使用介绍。

go get github.com/tmc/langchaingo

导入 langchaingo package到本地后,还需要通过注册智谱AI开放平台,获取API-KEY。

该步骤较为简单,只需要访问复制即可。
image.png


package main

import (
  "context"
  "fmt"
  "github.com/tmc/langchaingo/llms"
  "github.com/tmc/langchaingo/llms/openai"
  "log"
)

func main() {
   
  // 配置 glm-4 模型基础必要信息
  llm, err := openai.New(
    openai.WithModel("glm-4"),
    openai.WithBaseURL("https://open.bigmodel.cn/api/paas/v4/"),
    openai.WithToken("*****************************************"),
  )
  if err != nil {
   
    panic(err)
  }
  ctx := context.Background()
  // 构建聊天消息内容
  // 该部分代码用于创建并填充一个包含系统消息和人类消息的content切片。
  // content切片将包含关于项羽和刘邦的介绍请求
  var content []llms.MessageContent
  // 增加 system 消息
  content = append(content, llms.TextParts(llms.ChatMessageTypeSystem, "You are a chatbot."))
  // 增加 human 消息
  content = append(content, llms.TextParts(llms.ChatMessageTypeHuman, "帮我介绍一下项羽和刘邦."))
  // 调用模型生成回复
  if _, err = llm.GenerateContent(ctx, content,
    // 设置最大生成长度
    llms.WithMaxTokens(2048),
    // 设置 temperature
    llms.WithTemperature(0.9),
    // 设置流式输出
    llms.WithStreamingFunc(func(ctx context.Context, chunk []byte) error {
   
      fmt.Print(string(chunk))
      return nil
    })); err != nil {
   
    log.Fatal(err)
  }
}

上面的代码部分,主要分为3个部分:

配置 LLM。即配置模型的基本必要信息,如模型名称、模型的base-url以及模型的密钥部分。这块的基础信息都可以从智谱AI开放平台以及“接口文档-langchain sdk使用” 中直接获取。

构建基本聊天内容。其中 llms.ChatMessageTypeSystem 可以理解为 langchain 框架中的 system 角色,即用于传递系统级别的指示或设置对话的背景。这种消息通常由系统或开发者设定,用来影响对话的整体方向或提供背景信息。例如,你可以使用 system 消息来设定AI助手的角色、提供对话的背景信息或指定特定的行为规范;llms.ChatMessageTypeHuman 则对应代表 human 角色,即代表由用户或对话中的人类参与者发送的消息。这些消息是对话的主要输入,AI助手基于这些输入生成响应。

发送请求并构建返回内容。通过调用 llm 的 GenerateContent 方法,同时通过 llm 的 WithStreamingFunc 方法流式输出(即 stream=True);当然同样也可以通过 GenerateContent 方法直接返回 *llms.ContentResponse,并进行取值输出,如下所示:


response, err := llm.GenerateContent(ctx, content,
    // 设置最大生成长度
    llms.WithMaxTokens(2048),
    // 设置 temperature
    llms.WithTemperature(0.9),
  )
  if err != nil {
   
    log.Fatal(err)
  }
  fmt.Println(response.Choices[0].Content)

初步总结

langchaingo 项目目前距离 langchain 项目覆盖的功能还有段距离,但是社区的活跃度一直都比较稳定,此外最近测试,像 ollama 部署的 qwen1.5 模型,通过 langchaingo 测试整体效果也不错,可以持续关注。

后续除了继续深入 langchaingo 之外,也会不定期更新 ollama 的使用指南和 go 语言的其他场景~

参考内容

langchaingo: https://github.com/tmc/langchaingo

智谱AI开放平台: https://maas.aminer.cn/

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
人工智能 JSON 自然语言处理
大模型Prompt工程的重要性及构建方法
非常非常有用的一片宝藏文章,主要阐述了大模型prompt构建的一些基础方法,能够起到很好的帮助,本文转载至https://mp.weixin.qq.com/s/7X68fNdOOYfk5Qg9iEM2lA,该公众号的其他文章也很有用,推荐大家关注。
|
24天前
|
人工智能 Java 数据库
DeepAgents 人工介入实战|LangGraph 实现 Agent 高危工具人工审批
本文详解基于 LangChain+LangGraph+DeepAgents 实现 Python 智能体人工介入实战,配置高风险工具中断审批、状态检查点保存与恢复,支持同意 / 拒绝 / 参数编辑,对比 Spring AI Alibaba 方案,附完整可运行源码与生产落地建议。
271 0
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
存储 开发框架 Devops
eino — 基于go语言的大模型应用开发框架(一)
Eino 是一个受开源社区优秀LLM应用开发框架(如LangChain和LlamaIndex)启发的Go语言框架,强调简洁性、可扩展性和可靠性。它提供了易于复用的组件、强大的编排框架、简洁明了的API、最佳实践集合及实用的DevOps工具,支持快速构建和部署LLM应用。Eino不仅兼容多种模型库(如OpenAI、Ollama、Ark),还提供详细的官方文档和活跃的社区支持,便于开发者上手使用。
2912 8
|
9月前
|
人工智能 JavaScript 前端开发
用 Go 语言轻松构建 MCP 服务器
本文介绍了使用 Go 语言构建 MCP 服务器的完整过程,涵盖创建服务器实例、注册工具、资源和提示词,以及通过 stdio 和 sse 模式启动服务的方法,帮助开发者快速集成 LLM 应用与外部系统。
|
人工智能 开发框架 数据可视化
Eino:字节跳动开源基于Golang的AI应用开发框架,组件化设计助力构建AI应用
Eino 是字节跳动开源的大模型应用开发框架,帮助开发者高效构建基于大模型的 AI 应用。支持组件化设计、流式处理和可视化开发工具。
2447 27
|
机器学习/深度学习 JSON 监控
国内最大的MCP中文社区来了,4000多个服务等你体验
国内最大的MCP中文社区MCPServers来了!平台汇聚4000多个服务资源,涵盖娱乐、监控、云平台等多个领域,为开发者提供一站式技术支持。不仅有丰富的中文学习资料,还有详细的实战教程,如一键接入MCP天气服务等。MCPServers专注模块稳定性和实用性,经过99.99% SLA认证,是高效开发的理想选择。立即访问mcpservers.cn,开启你的开发之旅!
14703 16
|
人工智能 搜索推荐 程序员
用 Go 语言轻松构建 MCP 客户端与服务器
本文介绍了如何使用 mcp-go 构建一个完整的 MCP 应用,包括服务端和客户端两部分。 - 服务端支持注册工具(Tool)、资源(Resource)和提示词(Prompt),并可通过 stdio 或 sse 模式对外提供服务; - 客户端通过 stdio 连接服务器,支持初始化、列出服务内容、调用远程工具等操作。
2887 5

热门文章

最新文章