模极社社区 - 制造业全产业链交流平台

    • 登录
    • 版块
    • 最新
    • 话题
    • 热门
    • 用户
    • 群组

    Agent 定义方法——模具行业从业者必备知识手册

    社区公告
    1
    1
    0
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • S
      system 2 最后由 编辑

      <h2>Agent 定义方法</h2>

      <h3>导入方法</h3>

      <ul>
      <li>LLM Agent: <code>import veagent "github.com/volcengine/veadk-go/agent/llmagent"</code></li>
      <li>Sequential Agent: <code>import "github.com/volcengine/veadk-go/agent/workflowagents/sequentialagent"</code></li>
      <li>Loop Agent: <code>import "github.com/volcengine/veadk-go/agent/workflowagents/loopagent"</code></li>
      <li>Parallel Agent: <code>import "github.com/volcengine/veadk-go/agent/workflowagents/parallelagent"</code></li>
      </ul>

      <p>其中,LLM Agent 是最基础的智能体(由 LLM 启动进行自主决策),Sequential Agent 是按顺序执行的智能体,Loop Agent 是循环执行的智能体,Parallel Agent 是并行执行的智能体。</p>

      <h3>代码规范</h3>

      <h4>1、你可以通过如下方式定义智能体:</h4>

      <pre><code>
      import (
      "context"
      "fmt"

      veagent "github.com/volcengine/veadk-go/agent/llmagent"
      "github.com/volcengine/veadk-go/apps"
      "github.com/volcengine/veadk-go/apps/agentkit_server_app"
      vetool "github.com/volcengine/veadk-go/tool"
      "google.golang.org/adk/agent"
      "google.golang.org/adk/agent/llmagent"
      "google.golang.org/adk/tool"
      

      )

      func main() {
      ctx := context.Background()

      subAgent, err := veagent.New(&veagent.Config{
      	Config: llmagent.Config{
      		Name:        "...",
      		Description: "...",
      		Instruction: `...`,
      	},
      	ModelName: "...",
      })
      if err != nil {
      	fmt.Printf("NewLLMAgent subAgent failed: %v", err)
      	return
      }
      
      rootAgent, err := veagent.New(&veagent.Config{
      	Config: llmagent.Config{
      		Name:        "...",
      		Description: "...",
      		Instruction: `...`,
      		SubAgents: []agent.Agent{subAgent},
      	},
      	ModelName: "...",
      })
      if err != nil {
      	fmt.Printf("NewLLMAgent rootAgent failed: %v", err)
      	return
      }
      
      app := agentkit_server_app.NewAgentkitServerApp(apps.DefaultApiConfig())
      
      err = app.Run(ctx, &apps.RunConfig{
      	AgentLoader: agent.NewSingleLoader(rootAgent),
      })
      if err != nil {
      	fmt.Printf("Run failed: %v", err)
      }
      

      }

      </code></pre>

      <h4>2、可以生成一个强制按顺序执行的智能体:</h4>

      <pre><code>
      import (
      "context"
      "fmt"

      veagent "github.com/volcengine/veadk-go/agent/llmagent"
      "github.com/volcengine/veadk-go/agent/workflowagents/sequentialagent"
      "github.com/volcengine/veadk-go/apps"
      "github.com/volcengine/veadk-go/apps/agentkit_server_app"
      "google.golang.org/adk/agent"
      "google.golang.org/adk/agent/llmagent"
      

      )

      func main() {
      ctx := context.Background()

      agent1, err := veagent.New(&veagent.Config{
      	Config: llmagent.Config{
      		Name:        "...",
      		Description: "...",
      		Instruction: "...",
      	},
      })
      if err != nil {
      	fmt.Printf("NewLLMAgent agent1 failed: %v", err)
      	return
      }
      
      agent2, err := veagent.New(&veagent.Config{
      	Config: llmagent.Config{
      		Name:        "...",
      		Description: "...",
      		Instruction: "...",
      	},
      })
      if err != nil {
      	fmt.Printf("NewLLMAgent agent failed: %v", err)
      	return
      }
      
      rootAgent, err := sequentialagent.New(sequentialagent.Config{
      	AgentConfig: agent.Config{
      		Name:        "...",
      		SubAgents:   []agent.Agent{agent1, agent2},
      		Description: "...",
      	},
      })
      
      if err != nil {
      	fmt.Printf("NewSequentialAgent failed: %v", err)
      	return
      }
      
      app := agentkit_server_app.NewAgentkitServerApp(apps.DefaultApiConfig())
      
      err = app.Run(ctx, &apps.RunConfig{
      	AgentLoader: agent.NewSingleLoader(rootAgent),
      })
      if err != nil {
      	fmt.Printf("Run failed: %v", err)
      }
      

      }
      </code></pre>

      <p><code>agent1</code> 与 <code>agent2</code> 将会严格按顺序执行</p>

      <p>注意,根智能体的命名必须为 <code>rootAgent</code>。</p>

      <h3>让 Agent 结构化输出</h3>

      <p>为保证更高的准确率和 Agent 执行时的可控性,使用结构化输出是一种有效的手段。</p>

      <p>在定义 Agent 时,通过 <code>model_extra_config={"response_format": ...}</code> 可以让 Agent 结构化输出。其中,<code>...</code> 是你定义的 Pydantic 模型,用于描述 Agent 的输出格式。</p>

      <pre><code>
      from pydantic import BaseModel
      from veadk import Agent, Runner

      定义分步解析模型(对应业务场景的结构化响应)

      class Step(BaseModel):
      explanation: str # 步骤说明
      output: str # 步骤计算结果

      定义最终响应模型(包含分步过


      各位师傅觉得这个方案怎么样?有更好的做法吗?
      </code></pre>

      1 条回复 最后回复 回复 引用 0
      • First post
        Last post
      Powered by NodeBB | Contributors