eino_adk调用大模型
2026年1月12日 · 138 字 · 1 分钟
通过eino的adk封装agent调用大模型
通过adk调用大模型
在adk中基本单元是agent,如果想要运行一个模型,需要封装成一个agent(有点仿照谷歌adk的意思)
创建一个agent
ctx := context.Background()
messages := CreateMessage() //创建一个消息,请看关于enio调用大模型的文章
//deepseekModel := CreateDeepseekModel()
arkModel := CreateArkModel() //关于ark的模型创建,请看关于enio调用大模型的文章
//这里创建一个agent
a, err := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
Name: "timeConter", //agent的名称
Description: "时间计算器", //agent的描述
Instruction: `你是时间计算器,请根据用户的问题计算时间`, //agent的指令
Model: arkModel,
//毕竟是agent,在这里可以添加工具就先不添加了
})
if err != nil {
log.Fatal(fmt.Errorf("failed to create chatmodel: %w", err))
}
Run调用
在这里调用刚刚创建的agent
//runner调用agent
runner := adk.NewRunner(ctx, adk.RunnerConfig{
Agent: a,
})
//返回一个迭代器
//iter := runner.Query(ctx, "现在时"+time.Now().Format("2006-01-02 15:04:05")+"距离2027年还有几天")
//也可以通过messages来调用
iter := runner.Run(ctx, messages)
//定义一下最后的msg
var lastMsg adk.Message
//循环迭代器
for {
//迭代器获取事件
event, ok := iter.Next()
if !ok {
break
}
if event.Err != nil {
log.Fatal(event.Err)
}
msg, err := event.Output.MessageOutput.GetMessage()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", msg.Content)
lastMsg = msg
}
fmt.Println()
fmt.Println("lastMsg:", lastMsg.Content)
返回的内容
从2026年1月12日09:19:58到2027年1月1日00:00:00,距离2027年还有353天。
计算过程说明:
1. 2026年为平年(2月有28天),全年共365天。
2. 从2026年1月12日到2026年12月31日的天数为:365 - 12 = 353天(扣除1月1日至1月12日的12天,剩余时间即为到2027年1月1日00:00的整天数)。
lastMsg: 从2026年1月12日09:19:58到2027年1月1日00:00:00,距离2027年还有353天。
计算过程说明:
1. 2026年为平年(2月有28天),全年共365天。
2. 从2026年1月12日到2026年12月31日的天数为:365 - 12 = 353天(扣除1月1日至1月12日的12天,剩余时间即为到2027年1月1日00:00的整天数)。
从2026-01-12 09:20:31到2027年1月1日00:00:00,剩余的时间为**353天14小时39分28秒**。