eino调用大模型
2026年1月11日 · 204 字 · 1 分钟
通过字节开源的eino去调用大模型
eino调用大模型
enio是由字节跳动在2024年末进行开源的一款golang+agent的框架
其实没啥特别的,去官网一看就知道怎么调用了(写这篇博客存粹为了给自己用过eino做个痕迹,哈哈哈哈哈)
通过enio调用deepseek
var DeepseekModel *deepseek.ChatModel
func CreateDeepseekModel() *deepseek.ChatModel {
ctx := context.Background()
apiKey := "sk-xxxxxxx"
cm, err := deepseek.NewChatModel(ctx, &deepseek.ChatModelConfig{
APIKey: apiKey,
Model: "deepseek-chat",
BaseURL: "https://api.deepseek.com/beta",
//以下是可选配置
Timeout: 30 * time.Second,
MaxTokens: 1000,
Temperature: 1.0, //温度越高回答的越发散
Stop: []string{"的", "了"},//设置停用词
})
if err != nil {
fmt.Println("创建deepseek模型失败", err)
return nil
}
return cm
}
通过enio调用火山引擎
大差不差,其实都一样
var ArkModel *ark.ChatModel
func CreateArkModel() *ark.ChatModel {
ctx := context.Background()
chatModel, err := ark.NewChatModel(ctx, &ark.ChatModelConfig{
APIKey: "xxxxxx",
Model: "doubao-seed-1-8-251228",
//还有一些可选参数懒得写了,官方文档都有
})
if err != nil {
fmt.Println("创建ark模型失败", err)
return nil
}
return chatModel
}
最终调用
这里展示deepseek的运行,那个火山引擎的大差不差,显而易见
func CreateMessage() []*schema.Message {
inMsgs := []*schema.Message{
{
Role: schema.User,
Content: "你是啥模型",
},
}
return inMsgs
}
func RunModel(stream bool) {
ctx := context.Background()
messages := CreateMessage()
deepseekModel := CreateDeepseekModel()
//arkModel := CreateArkModel()
//如果是非流式
if !stream {
msg, err := deepseekModel.Generate(ctx, messages)
if err != nil {
fmt.Println("生成答案失败", err)
return
}
fmt.Println(msg.Role, msg.Content)
} else {
//流式
streamResult, err := deepseekModel.Stream(ctx, messages)
if err != nil {
fmt.Println("生成答案失败", err)
return
}
defer streamResult.Close()
for {
msg, err := streamResult.Recv()
if err != nil {
if err == io.EOF {
break
}
fmt.Println("读取答案失败", err)
return
}
fmt.Printf("%s", msg.Content)
}
}
}
func main() {
RunModel(true)
RunModel(false)
}
我是DeepSeek,由深度求索公司创造
assistant 我是DeepSeek,由深度求索公司创造