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
}
📄️ 入门指南
代理使用语言模型(LLM)来确定采取哪些行动以及按什么顺序进行。一个动作可以是使用工具并观察其输出,或者返回给用户。