<?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[Enio 与 VeADK-Go 对应规则——模具行业从业者必备知识手册]]></title><description><![CDATA[<p dir="auto">&lt;h2&gt;Enio 与 VeADK-Go 对应规则&lt;/h2&gt;</p>
<p dir="auto">&lt;p&gt;你可以通过下面的介绍，来了解 Enio 与 VeADK-Go 对应规则。具体的 VeADK-Go 定义方法可以参照 &lt;code&gt;references/samples/&lt;/code&gt; 目录中的内容。&lt;/p&gt;</p>
<p dir="auto">&lt;h3&gt;Enio 常用类型&lt;/h3&gt;</p>
<p dir="auto">&lt;ul&gt;<br />
&lt;li&gt;ReAct Agent 和 ChatModel 节点：对应 VeADK-Go的 LLM Agent，请参照 &lt;code&gt;references/common/agent.md&lt;/code&gt;&lt;/li&gt;<br />
&lt;li&gt;RetrieverNode: 对应VeADK-Go的KnowledgeBase，请参照 &lt;code&gt;references/common/knowledgebase.md&lt;/code&gt; 中的知识库定义和使用方法&lt;/li&gt;<br />
&lt;li&gt;工具节点/ToolsNode：对应VeADK-Go的工具，请参照 &lt;code&gt;references/common/tools.md&lt;/code&gt;&lt;/li&gt;<br />
&lt;li&gt;Chain和Graph的固定流程编排：直接用 Go 代码实现。&lt;/li&gt;<br />
&lt;li&gt;其中不包含大模型的逻辑节点，按照该节点与模型调用以及工具调用的相对位置，封装于 callBack&lt;/li&gt;<br />
&lt;/ul&gt;<br />
&lt;p&gt;      函数中，VeADK-Go的callBack函数，请参照 &lt;code&gt;references/common/callback.md&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;h3&gt;Enio 与 VeADK-Go 代码映射示例&lt;/h3&gt;</p>
<p dir="auto">&lt;h4&gt;1、Agent&lt;/h4&gt;</p>
<p dir="auto">&lt;p&gt;Enio 代码实现&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;React Agent 代码实现&lt;/p&gt;<br />
&lt;pre&gt;&lt;code&gt;<br />
func main() {<br />
// 先初始化所需的 chatModel<br />
toolableChatModel, err := openai.NewChatModel(...)</p>
<pre><code>// 初始化所需的 tools
tools := compose.ToolsNodeConfig{
    InvokableTools:  []tool.InvokableTool{mytool},
    StreamableTools: []tool.StreamableTool{myStreamTool},
}

// 创建 agent
agent, err := react.NewAgent(ctx, &amp;react.AgentConfig{
    ToolCallingModel: toolableChatModel,
    ToolsConfig: tools,
    ...
}
</code></pre>
<p dir="auto">}<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;p&gt;基于chain编排的Agent实现&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
func main() {<br />
// 初始化 tools<br />
todoTools := []tool.BaseTool{<br />
getAddTodoTool(),                               // NewTool 构建<br />
}</p>
<pre><code>// 创建并配置 ChatModel
chatModel, err := openai.NewChatModel(context.Background(), &amp;openai.ChatModelConfig{
    Model:       "...",
    APIKey:      os.Getenv("OPENAI_API_KEY"),
})
if err != nil {
    log.Fatal(err)
}
// 获取工具信息并绑定到 ChatModel
toolInfos := make([]*schema.ToolInfo, 0, len(todoTools))
for _, tool := range todoTools {
    info, err := tool.Info(ctx)
    if err != nil {
        log.Fatal(err)
    }
    toolInfos = append(toolInfos, info)
}
err = chatModel.BindTools(toolInfos)
if err != nil {
    log.Fatal(err)
}


// 创建 tools 节点
todoToolsNode, err := compose.NewToolNode(context.Background(), &amp;compose.ToolsNodeConfig{
    Tools: todoTools,
})
if err != nil {
    log.Fatal(err)
}

// 构建完整的处理链
chain := compose.NewChain&lsqb;&lsqb;]*schema.Message, []*schema.Message]()
chain.
    AppendChatModel(chatModel, compose.WithNodeName("chat_model")).
    AppendToolsNode(todoToolsNode, compose.WithNodeName("tools"))

// 编译并生成 agent
agent, err := chain.Compile(ctx)
if err != nil {
    log.Fatal(err)
}
</code></pre>
<p dir="auto">}</p>
<p dir="auto">&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;p&gt;VeADK-Go 代码实现&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<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(AddTodoTool())},<br />
},<br />
ModelName:   "...",<br />
ModelAPIKey: os.Getenv("OPENAI_API_KEY"),<br />
})</p>
<pre><code>if err != nil {
	log.Fatalf("Failed to create agent: %v", err)
}
</code></pre>
<p dir="auto">}</p>
<p dir="auto">&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h4&gt;2、Tool&lt;/h4&gt;</p>
<p dir="auto">&lt;p&gt;Enio 代码实现&lt;/p&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;请注意：VeADK-Go的函数工具参数中，jsonschema标签下的说明，禁止包含'describr=' 或者任何 '&lt;em&gt;*&lt;/em&gt;=' 的说明样式。&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
// 处理函数<br />
func AddTodoFunc(_ context.Context, params *TodoAddParams) (string, error) {<br />
// Mock处理逻辑<br />
return <code>{"msg": "add todo success"}</code>, nil<br />
}</p>
<p dir="auto">func getAddTodoTool() tool.InvokableTool {<br />
// 工具信息<br />
info := &amp;schema.ToolInfo{<br />
Name: "add_todo",<br />
Desc: "Add a todo item",<br />
ParamsOneOf: schema.NewParamsOneOfByParams(map[string]*schema.ParameterInfo{<br />
"content": {<br />
Desc:     "The content of the todo item",<br />
Type:     schema.String,<br />
Required: true,<br />
},<br />
"started_at": {<br />
Desc: "The started time of the todo item, in unix timestamp",</p>
<hr />
<p dir="auto">哪个方案更实用？欢迎投票讨论。<br />
&lt;/code&gt;&lt;/pre&gt;</p>
]]></description><link>https://forum.mj7.cn/topic/7118/enio-与-veadk-go-对应规则-模具行业从业者必备知识手册</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 14:03:24 GMT</lastBuildDate><atom:link href="https://forum.mj7.cn/topic/7118.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 19 Apr 2026 21:35:08 GMT</pubDate><ttl>60</ttl></channel></rss>