<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Tools 定义方法——模具行业从业者必备知识手册]]></title><description><![CDATA[<p dir="auto">&lt;h2&gt;Tools 定义方法&lt;/h2&gt;</p>
<p dir="auto">&lt;h3&gt;自定义 Tool&lt;/h3&gt;</p>
<p dir="auto">&lt;p&gt;你可以通过撰写一个 Go 函数来定义一个自定义 Tool（你必须清晰的定义好 Docstring）：&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
import (<br />
"context"<br />
"fmt"<br />
"log"</p>
<pre><code>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"
</code></pre>
<p dir="auto">)</p>
<p dir="auto">// CalculatorAddArgs 定义加法工具的入参。使用静态类型，便于 LLM 以 JSON 方式调用。<br />
type CalculatorAddArgs struct {<br />
A float64 <code>json:"a" jsonschema:"第一个加数，支持整数或小数"</code><br />
B float64 <code>json:"b" jsonschema:"第二个加数，支持整数或小数"</code><br />
}</p>
<p dir="auto">// CalculatorAddTool 返回一个符合 ADK functiontool 规范的工具。<br />
// 该工具用于执行两数相加，并返回 result 字段。<br />
func CalculatorAddTool() (tool.Tool, error) {<br />
handler := func(ctx tool.Context, args CalculatorAddArgs) (map[string]any, error) {<br />
result := args.A + args.B<br />
return map[string]any{<br />
"result":  result,<br />
"explain": fmt.Sprintf("%g + %g = %g", args.A, args.B, result),<br />
}, nil<br />
}</p>
<pre><code>return functiontool.New(
	functiontool.Config{
		Name:        "calculator_add",
		Description: "一个简单的计算器工具，执行两数相加。参数: a, b; 返回: result(浮点数)",
	},
	handler,
)
</code></pre>
<p dir="auto">}<br />
func main() {<br />
ctx := context.Background()<br />
rootAgent, err := veagent.New(&amp;veagent.Config{<br />
Config: llmagent.Config{<br />
Tools: []tool.Tool{utils.Must(CalculatorAddTool())},<br />
},<br />
})</p>
<pre><code>if err != nil {
	log.Fatalf("Failed to create agent: %v", err)
}

app := agentkit_server_app.NewAgentkitServerApp(apps.DefaultApiConfig())

err = app.Run(ctx, &amp;apps.RunConfig{
	AgentLoader: agent.NewSingleLoader(rootAgent),
})
if err != nil {
	fmt.Printf("Run failed: %v", err)
}
</code></pre>
<p dir="auto">}<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h3&gt;使用内置工具&lt;/h3&gt;</p>
<p dir="auto">&lt;p&gt;你可以通过如下方式将某个工具挂载到智能体上，例如 &lt;code&gt;web_search&lt;/code&gt; 网络搜索工具：&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
import (<br />
"context"<br />
"fmt"<br />
"log"<br />
"os"</p>
<pre><code>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"
</code></pre>
<p dir="auto">)</p>
<p dir="auto">func main() {<br />
ctx := context.Background()<br />
cfg := veagent.Config{<br />
ModelName:    "...",<br />
ModelAPIBase: "...",<br />
ModelAPIKey:  "...",<br />
}</p>
<pre><code>webSearch, err := web_search.NewWebSearchTool(&amp;web_search.Config{})
if err != nil {
	fmt.Printf("NewWebSearchTool failed: %v", err)
	return
}

cfg.Tools = []tool.Tool{webSearch}

a, err := veagent.New(&amp;cfg)
if err != nil {
	fmt.Printf("NewLLMAgent failed: %v", err)
	return
}

config := &amp;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>
<p dir="auto">}</p>
<p dir="auto">&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;hr&gt;</p>
<p dir="auto">&lt;p&gt;本文由模极社发布&lt;/p&gt;</p>
<p dir="auto">&lt;hr&gt;<br />
&lt;p&gt;!&lt;a href="upload://im5w4bbZS7qEfHo32U8caxAUX72.svg"&gt;Tools 定义方法&lt;/a&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;hr&gt;<br />
&lt;h4&gt;<img src="https://forum.mj7.cn/assets/plugins/nodebb-plugin-emoji/emoji/android/1f517.png?v=k0o2a4s5i30" class="not-responsive emoji emoji-android emoji--link" title=":link:" alt="🔗" /> 你可能还感兴趣&lt;/h4&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;&lt;a href="/t/4513/4513"&gt;@vue/shared&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="/t/4298/4298"&gt;confbox&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="/t/939/939"&gt;扇形浇口尺寸怎么算？&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p dir="auto">&lt;hr&gt;<br />
&lt;p&gt;&lt;strong&gt;相关推荐：&lt;/strong&gt;&lt;/p&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;&lt;a href="<a href="https://www.mj7.cn/t/4836-4836" rel="nofollow ugc">https://www.mj7.cn/t/4836-4836</a>"&gt;北京模具产业 — 科技研发驱动型模具基地&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="<a href="https://www.mj7.cn/t/4835-4835" rel="nofollow ugc">https://www.mj7.cn/t/4835-4835</a>"&gt;上海模具产业 — 高端精密模具研发中心&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="<a href="https://www.mj7.cn/t/4834-4834" rel="nofollow ugc">https://www.mj7.cn/t/4834-4834</a>"&gt;产业集群与模具产业发展的关系&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p dir="auto">&lt;hr&gt;<br />
&lt;p&gt;各位师傅觉得这个方案怎么样？有更好的做法吗？&lt;/p&gt;</p>
]]></description><link>https://forum.mj7.cn/topic/7117/tools-定义方法-模具行业从业者必备知识手册</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 14:42:26 GMT</lastBuildDate><atom:link href="https://forum.mj7.cn/topic/7117.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 19 Apr 2026 21:35:05 GMT</pubDate><ttl>60</ttl></channel></rss>