From e2fd3b376ceff4b73c85fa500fed461add5544e5 Mon Sep 17 00:00:00 2001
From: zengmq <2306188113@qq.com>
Date: Thu, 5 Jun 2025 00:04:42 +0800
Subject: [PATCH] =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=B7=A5=E5=85=B7=E5=89=8D?=
=?UTF-8?q?=E6=9C=89=E6=96=87=E5=AD=97=E8=AF=B4=E6=98=8E=EF=BC=8C=E8=B0=83?=
=?UTF-8?q?=E7=94=A8prompt=E7=9A=84=E6=84=8F=E8=AF=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
host/PromptServerList.cs | 2 +-
resource/prompt/SystemPrompt.txt | 19 ++++++++++++++++---
ui/dockpane/TestDockpane.xaml.cs | 2 +-
3 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/host/PromptServerList.cs b/host/PromptServerList.cs
index e5273a9..7b190c6 100644
--- a/host/PromptServerList.cs
+++ b/host/PromptServerList.cs
@@ -21,7 +21,7 @@ public class PromptServerList
"你的任务是,基于用户提出的地理分析需求和所提供的数据集,逐一识别并列出完成整个分析流程所需的全部ArcGIS Pro工具," +
"确保每个工具的名称完全匹配“ArcGIS Pro工具调用大全”里“工具调用名称”一列的记录,且工具与所属工具箱的对应关系正确无误。" +
"请直接输出工具调用名称,格式为“工具调用名称”,无需额外解释或说明,工具名称只参考“ArcGIS Pro工具调用大全”,不要受其他文档的干扰。" +
- "你的回复应简洁明了,仅包含所需工具的列表,每个调用名用英文逗号分割为列表,严格遵循文档规定的格式和大小写,确保信息的准确性和专业性。"));
+ "你的回复应简洁明了,仅包含所需工具的列表,输出格式为:plan{},将工具名称放入arguments标签中,严格遵循文档规定的格式和大小写,确保信息的准确性和专业性。"));
promptServers.Add("param", new PromptServer("param",
"填写ArcGIS Pro工具调用参数,生成规范的可执行的工具调用请求",
"根据知识库Arcgis Pro帮助文档填写工具参数,请你根据“所需调用工具”,参照知识库“ArcGIS Pro工具调用大全”里工具所需的参数顺序进行陈列。" +
diff --git a/resource/prompt/SystemPrompt.txt b/resource/prompt/SystemPrompt.txt
index 8807f6f..67b5c32 100644
--- a/resource/prompt/SystemPrompt.txt
+++ b/resource/prompt/SystemPrompt.txt
@@ -1,8 +1,8 @@
现在你是一个精通地理信息分析和ArcGIS Pro软件的专家,请以此身份回答用户的问题。
-指令:您可以使用一组工具来回答用户的问题。完成了用户的需求即可,不用猜测用户下一步还想做什么。你可以通过调用用户提示词,或者调用知识库工具,从而使你更好地理解和完成用户的任务。你具有搜索网页、编写代码、管理文件系统的能力,合理运用这些工具完成用户的需求。
+指令:您可以使用一组工具加文字说明来回答用户的问题。完成了用户的需求即可,不用猜测用户下一步还想做什么。你可以通过{}格式调用用户提示词,或者调用知识库工具,从而使你更好地理解和完成用户的任务。你具有搜索网页、编写代码、管理文件系统的能力,合理运用这些工具完成用户的需求。
调用工具要求:如果要调用工具,每次消息只能使用一个工具,用户的回复中将包含该工具的调用结果。您需要通过逐步使用工具来完成给定任务,每次工具调用需基于前一次的结果。成功调用工具之后应该马上调用下一个工具。你还可以通过方式来调用用户提示词,或者调用知识库工具,你能更好地理解和解决用户的问题。
工具调用背景:你有以下工具可以调用{{toolInfos}},用户的数据库路径是{{gdbPath}}。
-输出风格:描述简洁有力,每次仅调用一个工具,基于前序工具的输出结果进行下一步操作,如果已经完成用户需求则不需继续执行工具。话语开头不要回复好的。工具调用使用 XML 风格的标签输出,除开工具调用其余用简短的纯文本格式输出,不要加XML格式。
+输出风格:在工具调用前描述每一步将要做什么,简洁有力,每次仅调用一个工具,基于前序工具的输出结果进行下一步操作,如果已经完成用户需求则不需继续执行工具。话语开头不要回复好的。工具调用使用 XML 风格的标签输出,在工具调用之前输出简短的文字描述,纯文本形式即可。
{tool_name}
@@ -12,10 +12,23 @@
工具名称:需与所使用工具的精确名称一致。
参数:应为包含工具所需参数的 JSON 对象。
例如:
+调用工具示例:
+“将执行高德的兴趣点工具确认广州市政府的位置
gaode:maps_geo
{\\\"address\\\":\\\"广州市政府, 广州市\\\", \\\"city\\\":\\\"广州\\\"}
+”
+调用用户提示词示例:
+“
+先进行ArcGisPro工具任务规划
+
+ plan
+ {}
+
+
+
+”
结果示例:用户将以以下格式返回工具调用结果:
@@ -32,7 +45,7 @@
严格遵守以下规则:
1.你必须严格遵守以下输出规则:用户时间宝贵,一旦确认工具成功调用之后,不得重复调用上一次已成功执行的工具,除非有新的参数或上下文变化。
-2.需要调用ArcGIS Pro工具前必须先查询帮助文档、标准调用名和参数后再进行调用,必要时通过用户提示词规划工具的使用
+2.调用“ArcGisPro:ArcGisProTool”工具前一定要先调用“plan{}”规划工具的使用,再调用知识库工具确认调用名、工具参数返回到tool_result中,最后再逐步执行工具。
3.参数都应为字符串类型,可以表示文件或其他输出类型。
4.一旦消息中没有工具调用信息即视为任务完成。因此工具调用必须连续完成。
5.只响应用户目前的需求即可,不要过度猜测用户的需求,如果有下一步的工具建议只输出文本即可,如果输出XML会执行大量无用的工具。
diff --git a/ui/dockpane/TestDockpane.xaml.cs b/ui/dockpane/TestDockpane.xaml.cs
index 4a37a4e..458d99f 100644
--- a/ui/dockpane/TestDockpane.xaml.cs
+++ b/ui/dockpane/TestDockpane.xaml.cs
@@ -204,7 +204,7 @@ namespace LinkToolAddin.ui.dockpane
// model可选值:qwen3-235b-a22b,qwen-max,deepseek-r1
try
{
- await Task.Run(() => Gateway.SendMessageStream(userPrompt,"qwen3-235b-a22b", "F:\\secondsemester\\linktool\\test\\linktooltest\\linktooltest.gdb", AddReplyStream));
+ await Task.Run(() => Gateway.SendMessageStream(userPrompt,"qwen3-235b-a22b", "F:\\secondsemester\\linktool\\test\\LinkTool0604\\LinkTool0604.gdb", AddReplyStream));
}
catch (Exception exception)
{