Files
knowledge-graph-agent/backend/internal/llm/tools.go
T

118 lines
4.1 KiB
Go
Raw Normal View History

2026-04-20 15:34:40 +08:00
package llm
import "github.com/tmc/langchaingo/llms"
func GetKnowledgeGraphTools() []llms.Tool {
return []llms.Tool{
{
Type: "Node operation",
Function: &llms.FunctionDefinition{
Name: "search_nodes",
Description: "当需要根据关键词在知识图谱中搜索相关节点时调用此工具",
Parameters: map[string]any{
"type": "object",
"properties": map[string]any{
"query": map[string]any{
"type": "string",
"description": "搜索的关键词",
},
},
"required": []string{"query"},
},
},
},
{
Type: "Node operation",
Function: &llms.FunctionDefinition{
Name: "get_neighbors",
Description: "当需要查找某个节点的相邻节点(即与该节点有直接连线的节点)时调用此工具",
Parameters: map[string]any{
"type": "object",
"properties": map[string]any{
"node_id": map[string]any{
"type": "string",
"description": "目标节点的唯一 ID",
},
},
"required": []string{"node_id"},
},
},
},
{
Type: "Node operation",
Function: &llms.FunctionDefinition{
Name: "create_node",
Description: "当需要在知识图谱中创建一个新的节点时调用此工具",
Parameters: map[string]any{
"type": "object",
"properties": map[string]any{
"id": map[string]any{"type": "string", "description": "节点的唯一ID,格式通常为 node_xxx"},
"label": map[string]any{"type": "string", "description": "节点的名称/标签,例如:人工智能"},
"type": map[string]any{"type": "string", "description": "节点的类型,例如:概念、实体"},
"x": map[string]any{"type": "number", "description": "节点在画布上的 X 坐标 (可选,默认0)"},
"y": map[string]any{"type": "number", "description": "节点在画布上的 Y 坐标 (可选,默认0)"},
"properties": map[string]any{"type": "object", "description": "节点的额外属性键值对 (可选)"},
},
"required": []string{"id", "label", "type"},
},
},
},
{
Type: "Edge operation",
Function: &llms.FunctionDefinition{
Name: "create_edge",
Description: "当需要在知识图谱中创建一条连线(边)连接两个节点时调用此工具",
Parameters: map[string]any{
"type": "object",
"properties": map[string]any{
"id": map[string]any{"type": "string", "description": "边的唯一ID,格式通常为 edge_xxx"},
"source": map[string]any{"type": "string", "description": "起始节点的 ID"},
"target": map[string]any{"type": "string", "description": "目标节点的 ID"},
"label": map[string]any{"type": "string", "description": "连线的名称/标签,例如:包含、依赖于"},
"type": map[string]any{"type": "string", "description": "连线的类型 (可选),例如:CONTAINS"},
"properties": map[string]any{
"type": "object",
"description": "边的额外属性键值对 (可选)",
},
},
"required": []string{"id", "source", "target", "label"},
},
},
},
{
Type: "Node operation",
Function: &llms.FunctionDefinition{
Name: "delete_node",
Description: "当需要从知识图谱中删除一个现有节点时调用此工具",
Parameters: map[string]any{
"type": "object",
"properties": map[string]any{
"id": map[string]any{
"type": "string",
"description": "要删除的节点的唯一 ID",
},
},
"required": []string{"id"},
},
},
},
{
Type: "Edge operation",
Function: &llms.FunctionDefinition{
Name: "delete_edge",
Description: "当需要从知识图谱中删除一条连线(边)时调用此工具",
Parameters: map[string]any{
"type": "object",
"properties": map[string]any{
"id": map[string]any{
"type": "string",
"description": "要删除的边的唯一 ID",
},
},
"required": []string{"id"},
},
},
},
}
}