第一章:Go 语言开发的大模型调用框架 - Eino

发布时间:2026/5/23 1:38:40

第一章:Go 语言开发的大模型调用框架 - Eino 1. go语言版的Langchain - Eino(字节)说到LLM应用开发框架大家第一反应可能是Python圈的LangChain。确实LangChain是这个领域的先行者生态也非常成熟。但Eino并不是LangChain的Go翻译版--它借鉴了LangChain、GoogleADK等框架的设计理念但整个架构是按照Go的惯例从头设计的。比如用接口来抽象组件、用强类型来做编排时的类型检查、用goroutine来实现并行编排--这些都是Go语言本身的优势而不是硬套Python的设计模式。 用一句话概括Eino的定位:它是一个组件化、可编排、可观测的Go语言LLM应用开发框架。组件化意味着你可以像搭积木一样组合各种能力“可编排意味着你可以用Chain、Graph、Workflow三种方式把组件串联起来可观测意味着从日志到链路追踪框架层面就帮你解决了。2. 一个简单的llm调用示例packagemainimport(contexterrorsfmtgithub.com/cloudwego/eino-ext/components/model/openaigithub.com/cloudwego/eino/schemaiolog)/** * 使用 ModelScope 的 OpenAI 模型 * 一个简单的llm调用示例 */funcmain(){ctx:context.Background()model,err:openai.NewChatModel(ctx,openai.ChatModelConfig{BaseURL:https://api-inference.modelscope.cn/v1/,APIKey:xxx,// 魔塔社区可创建key,每天有免费额度可用Model:Qwen/Qwen3.5-35B-A3B,})iferr!nil{log.Fatalf(创建 ChatModel 失败: %v,err)}message:[]*schema.Message{schema.SystemMessage(你是一个Go语言专家擅长深入浅出地讲解技术概念。),schema.UserMessage(请用200字左右解释 Go 语言的 channel 是什么以及它在并发编程中的作用。),}// 获取流式读取器stream,err:model.Stream(ctx,message)iferr!nil{log.Fatalf(获取流式读取器失败: %v,err)}deferstream.Close()fmt.Println(模型回复流式)// 循环读取流式数据块for{chunk,err:stream.Recv()iferrors.Is(err,io.EOF){// 流结束break}iferr!nil{log.Fatalf(读取流数据失败: %v,err)}// 每收到一块就立即输出不换行fmt.Print(chunk.Content)}fmt.Println()// 最后换行}

相关新闻