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

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

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

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

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

      <h3>自定义 Tool</h3>

      <p>你可以通过撰写一个 Go 函数来定义一个自定义 Tool(你必须清晰的定义好 Docstring):</p>

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

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

      )

      // CalculatorAddArgs 定义加法工具的入参。使用静态类型,便于 LLM 以 JSON 方式调用。
      type CalculatorAddArgs struct {
      A float64 json:"a" jsonschema:"第一个加数,支持整数或小数"
      B float64 json:"b" jsonschema:"第二个加数,支持整数或小数"
      }

      // CalculatorAddTool 返回一个符合 ADK functiontool 规范的工具。
      // 该工具用于执行两数相加,并返回 result 字段。
      func CalculatorAddTool() (tool.Tool, error) {
      handler := func(ctx tool.Context, args CalculatorAddArgs) (map[string]any, error) {
      result := args.A + args.B
      return map[string]any{
      "result": result,
      "explain": fmt.Sprintf("%g + %g = %g", args.A, args.B, result),
      }, nil
      }

      return functiontool.New(
      	functiontool.Config{
      		Name:        "calculator_add",
      		Description: "一个简单的计算器工具,执行两数相加。参数: a, b; 返回: result(浮点数)",
      	},
      	handler,
      )
      

      }
      func main() {
      ctx := context.Background()
      rootAgent, err := veagent.New(&veagent.Config{
      Config: llmagent.Config{
      Tools: []tool.Tool{utils.Must(CalculatorAddTool())},
      },
      })

      if err != nil {
      	log.Fatalf("Failed to create agent: %v", err)
      }
      
      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>

      <h3>使用内置工具</h3>

      <p>你可以通过如下方式将某个工具挂载到智能体上,例如 <code>web_search</code> 网络搜索工具:</p>

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

      veagent "github.com/volcengine/veadk-go/agent/llmagent"
      "github.com/volcengine/veadk-go/common"
      "github.com/volcengine/veadk-go/tool/builtin_tools/web_search"
      "google.golang.org/adk/agent"
      "google.golang.org/adk/cmd/launcher"
      "google.golang.org/adk/cmd/launcher/full"
      "google.golang.org/adk/session"
      "google.golang.org/adk/tool"
      

      )

      func main() {
      ctx := context.Background()
      cfg := veagent.Config{
      ModelName: "...",
      ModelAPIBase: "...",
      ModelAPIKey: "...",
      }

      webSearch, err := web_search.NewWebSearchTool(&web_search.Config{})
      if err != nil {
      	fmt.Printf("NewWebSearchTool failed: %v", err)
      	return
      }
      
      cfg.Tools = []tool.Tool{webSearch}
      
      a, err := veagent.New(&cfg)
      if err != nil {
      	fmt.Printf("NewLLMAgent failed: %v", err)
      	return
      }
      
      config := &launcher.Config{
      	AgentLoader:    agent.NewSingleLoader(a),
      	SessionService: session.InMemoryService(),
      }
      
      l := full.NewLauncher()
      if err = l.Execute(ctx, config, os.Args[1:]); err != nil {
      	log.Fatalf("Run failed: %v\n\n%s", err, l.CommandLineSyntax())
      }
      

      }

      </code></pre>

      <hr>

      <p>本文由模极社发布</p>

      <hr>
      <p>!<a href="upload://im5w4bbZS7qEfHo32U8caxAUX72.svg">Tools 定义方法</a></p>

      <hr>
      <h4>🔗 你可能还感兴趣</h4>
      <ul>
      <li><a href="/t/4513/4513">@vue/shared</a></li>
      <li><a href="/t/4298/4298">confbox</a></li>
      <li><a href="/t/939/939">扇形浇口尺寸怎么算?</a></li>
      </ul>

      <hr>
      <p><strong>相关推荐:</strong></p>
      <ul>
      <li><a href="https://www.mj7.cn/t/4836-4836">北京模具产业 — 科技研发驱动型模具基地</a></li>
      <li><a href="https://www.mj7.cn/t/4835-4835">上海模具产业 — 高端精密模具研发中心</a></li>
      <li><a href="https://www.mj7.cn/t/4834-4834">产业集群与模具产业发展的关系</a></li>
      </ul>

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

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