跳到主要内容

Agent 执行器

为了让代理更加强大,我们需要让它们具有迭代性,即多次调用模型直到得出最终答案。这就是 AgentExecutor 的职责所在。

示例

一个初始化 MRKL(模块化推理、知识和语言,发音为 "miracle")代理执行器的示例。

package main

import (
"context"
"fmt"
"os"

"github.com/tmc/langchaingo/agents"
"github.com/tmc/langchaingo/chains"
"github.com/tmc/langchaingo/llms/openai"
"github.com/tmc/langchaingo/tools"
"github.com/tmc/langchaingo/tools/serpapi"
)

func main() {
if err := run(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}

func run() error {
llm, err := openai.New()
if err != nil {
return err
}
search, err := serpapi.New()
if err != nil {
return err
}
agentTools := []tools.Tool{
tools.Calculator{},
search,
}

agent := agents.NewOneShotAgent(llm,
agentTools,
agents.WithMaxIterations(3))
executor := agents.NewExecutor(agent)

question := "Who is Olivia Wilde's boyfriend? What is his current age raised to the 0.23 power?"
answer, err := chains.Run(context.Background(), executor, question)
fmt.Println(answer)
return err
}