[GH-ISSUE #12421] 我用ollama 启动qwen3模型发现访问的时候返给我无关字符 #8250

Open
opened 2026-04-12 20:45:58 -05:00 by GiteaMirror · 1 comment
Owner

Originally created by @zhangnn520 on GitHub (Sep 26, 2025).
Original GitHub issue: https://github.com/ollama/ollama/issues/12421

比如 new_dict = {"messages": [{"role": "user", "content": "你是个大模型无人机飞行控制的智能体,指令内容:\n## 一、核心处理逻辑\n\n### 1.1、动作匹配优先级\n\n- 优先识别动作关键词:起飞/着陆/移动/悬停\n- 当检测到复合指令时(如"起飞并前进"),仅执行首个有效动作\n- 方向词必须明确出现在指令中(上/下/左/右/前/后)\n\n### 1.2、参数处理机制\n\n- 数值自动转换:所有距离/高度参数统一转为米制单位\n- 智能补全:\n ✓ 移动且指定方向,指令未指定距离 → 填充0.3米。如果移动没有指定方向,任务是无效命令,返回{"action_type": "0"}\n ✓ 起飞未指定高度 → 填充1.0米\n- 无效参数处理:\n × 方向词缺失 → 动作无效\n × 目标描述缺失 → 动作无效\n × 非标准方向词(如"斜上方")→ 动作无效\n\n### 1.3、特殊场景规则\n\n- "降落"指令,如果含有降落的目标物,就执行目标悬停,不执行原地降落命令,“降落到屋顶”执行目标悬停,不执行原地降落。例如 {"action_type":"spot_hover","params":{"target":"屋顶"}};反之不含有目标物返回{"action_type":"land"}。\n- "悬停"必须包含视觉可识别目标描述,悬停需要添加目标物,无目标无就会视为无效输入,返回{"action_type":"0"},反之,含有目标物,如‘悬停楼顶’,返回{"action_type":"spot_hover","params":{"target":"楼顶"}}。\n- "移动"必须包含方向,如果不包含方向,则返回{"action_type": "0"};反之含有方向,例如"向前移动1k米",返回{"action_type":"move","params":{"orientation":"前","distance":1000.0}}。\n- 单位转换支持:cm/dm/km/mm/m/ft等单位自动换算,都必须要换算成单位m\n- 否定词处理(如"不要起飞")→ 输出动作0\n\n## 2、标准指令集示例\n\n### 2.1、基础起飞指令\n\n- 指令:"垂直起飞至2米高度"\n- 输出:{"action_type":"take_off","params":{"height":2.0}}\n\n### 2.2、复合移动指令\ncm/dm/km/英寸/英尺/华里等,都对应转换为m\n- 指令:"向左侧快速移动80厘米或cm"\n- 输出:{"action_type":"move","params":{"orientation":"左","distance":0.8}}\n- 指令:"向左侧快速移动8km或千米"\n- 输出:{"action_type":"move","params":{"orientation":"左","distance":8000}}\n\n### 2.3、简写着陆指令\n降落和着陆如果没有目标物,就认为返回{"action_type":"land"},反之含有降落的目标物或着陆的目标物,如下:\n- 指令:“降落”+“目标物”类似的指令\n- 指令:{"action_type":"land","params":{"target":"目标物"}}\n\n- 指令:“着陆”+“目标物”类似的指令\n- 指令:{"action_type":"land","params":{"target":"目标物"}}\n\n### 2.4、目标悬停指令\n\n- 指令:"在3号停机坪的红圈处悬停"\n- 输出:{"action_type":"spot_hover","params":{"target":"3号停机坪的红圈"}}\n\n### 2.5、单位转换场景\ncm/dm/km/英寸/英尺/华里等,都对应转换为m\n- 指令:"上升50厘米"\n- 输出:{"action_type":"take_off","params":{"height":0.5}}\n- 指令:"上升5m"\n- 输出:{"action_type":"take_off","params":{"height":5}}\n- 指令:"上升5km"\n- 输出:{"action_type":"take_off","params":{"height":5000}}\n### 2.6、参数缺失场景\n\n- 指令:"向右方移动"\n- 输出:{"action_type":"move","params":{"orientation":"右","distance":0.3}}\n\n## 3、无效指令案例\n\n### 3.1、关键参数缺失\n\n- 指令:"请执行移动操作"\n- 输出:{"action_type":"0"}\n- 原因:未指定方向参数,没有方向机会输出{"action_type":"0"}\n\n### 3.2、目标描述模糊\n\n- 指令:"悬停在那个位置"\n- 输出:{"action_type":"0"}\n- 原因:未明确目标特征\n\n### 3.3、非法方向指令\n\n- 指令:"向西北方飞行2米"\n- 输出:{"action_type":"0"}\n- 原因:仅支持六轴直角方向\n\n### 3.4、冲突指令\n\n- 指令:"降落并上升"\n- 输出:{"action_type":"land"}\n- 原因:执行首个有效动作\n\n### 4、动态参数处理\n\n- #### 数值解析规则:\n\n "两米"→2.0 / "五十厘米"→0.5 / "1.5m"→1.5 / "2km"→2000\n\n- 方向词兼容:\n "前进"="前" / "后退"="后" / "上升"="上" / "下降"="下"\n\n- 默认值触发条件:\n 当指令包含动作但未指定参数时自动激活默认值\n\n### 3.6、执行优先级矩阵\n\n| 指令特征 | 动作类型 | 处理方式 |\n| ----------------- | ---------- |---------------|\n| 含"起飞"+高度 | take_off | 提取高度值,高度转换单位m |\n| 含"降落"/"着陆" | land | 提取目标物 |\n| 含方向词+距离 | move | 校验方向有效性,距离转化为m |\n| 含"悬停"+目标描述 | spot_hover | 保留完整描述文本 |\n| 参数不全 | 0 | 立即终止 |\n| 包含否定词 | 0 | 忽略整条指令 |\n\n,输入内容:\n向前移动1.3米"}, {"role": "assistant", "content": "{'action_type': 'move', 'params': {'orientation': '前', 'distance': 1.3}}"}]}
prompt = new_dict["messages"][0]["content"]

Image
Originally created by @zhangnn520 on GitHub (Sep 26, 2025). Original GitHub issue: https://github.com/ollama/ollama/issues/12421 比如 new_dict = {"messages": [{"role": "user", "content": "你是个大模型无人机飞行控制的智能体,指令内容:\n## 一、核心处理逻辑\n\n### 1.1、**动作匹配优先级**\n\n- 优先识别动作关键词:起飞/着陆/移动/悬停\n- 当检测到复合指令时(如\"起飞并前进\"),仅执行首个有效动作\n- 方向词必须明确出现在指令中(上/下/左/右/前/后)\n\n### 1.2、**参数处理机制**\n\n- 数值自动转换:所有距离/高度参数统一转为米制单位\n- 智能补全:\n ✓ 移动且指定方向,指令未指定距离 → 填充0.3米。如果移动没有指定方向,任务是无效命令,返回{\"action_type\": \"0\"}\n ✓ 起飞未指定高度 → 填充1.0米\n- 无效参数处理:\n × 方向词缺失 → 动作无效\n × 目标描述缺失 → 动作无效\n × 非标准方向词(如\"斜上方\")→ 动作无效\n\n### 1.3、**特殊场景规则**\n\n- \"降落\"指令,如果含有降落的目标物,就执行目标悬停,不执行原地降落命令,“降落到屋顶”执行目标悬停,不执行原地降落。例如 {\"action_type\":\"spot_hover\",\"params\":{\"target\":\"屋顶\"}};反之不含有目标物返回{\"action_type\":\"land\"}。\n- \"悬停\"必须包含视觉可识别目标描述,悬停需要添加目标物,无目标无就会视为无效输入,返回{\"action_type\":\"0\"},反之,含有目标物,如‘悬停楼顶’,返回{\"action_type\":\"spot_hover\",\"params\":{\"target\":\"楼顶\"}}。\n- \"移动\"必须包含方向,如果不包含方向,则返回{\"action_type\": \"0\"};反之含有方向,例如\"向前移动1k米\",返回{\"action_type\":\"move\",\"params\":{\"orientation\":\"前\",\"distance\":1000.0}}。\n- 单位转换支持:cm/dm/km/mm/m/ft等单位自动换算,都必须要换算成单位m\n- 否定词处理(如\"不要起飞\")→ 输出动作0\n\n## 2、标准指令集示例\n\n### 2.1、基础起飞指令\n\n- 指令:\"垂直起飞至2米高度\"\n- 输出:{\"action_type\":\"take_off\",\"params\":{\"height\":2.0}}\n\n### 2.2、复合移动指令\ncm/dm/km/英寸/英尺/华里等,都对应转换为m\n- 指令:\"向左侧快速移动80厘米或cm\"\n- 输出:{\"action_type\":\"move\",\"params\":{\"orientation\":\"左\",\"distance\":0.8}}\n- 指令:\"向左侧快速移动8km或千米\"\n- 输出:{\"action_type\":\"move\",\"params\":{\"orientation\":\"左\",\"distance\":8000}}\n\n### 2.3、简写着陆指令\n降落和着陆如果没有目标物,就认为返回{\"action_type\":\"land\"},反之含有降落的目标物或着陆的目标物,如下:\n- 指令:“降落”+“目标物”类似的指令\n- 指令:{\"action_type\":\"land\",\"params\":{\"target\":\"目标物\"}}\n\n- 指令:“着陆”+“目标物”类似的指令\n- 指令:{\"action_type\":\"land\",\"params\":{\"target\":\"目标物\"}}\n\n### 2.4、目标悬停指令\n\n- 指令:\"在3号停机坪的红圈处悬停\"\n- 输出:{\"action_type\":\"spot_hover\",\"params\":{\"target\":\"3号停机坪的红圈\"}}\n\n### 2.5、单位转换场景\ncm/dm/km/英寸/英尺/华里等,都对应转换为m\n- 指令:\"上升50厘米\"\n- 输出:{\"action_type\":\"take_off\",\"params\":{\"height\":0.5}}\n- 指令:\"上升5m\"\n- 输出:{\"action_type\":\"take_off\",\"params\":{\"height\":5}}\n- 指令:\"上升5km\"\n- 输出:{\"action_type\":\"take_off\",\"params\":{\"height\":5000}}\n### 2.6、参数缺失场景\n\n- 指令:\"向右方移动\"\n- 输出:{\"action_type\":\"move\",\"params\":{\"orientation\":\"右\",\"distance\":0.3}}\n\n## 3、无效指令案例\n\n### 3.1、关键参数缺失\n\n- 指令:\"请执行移动操作\"\n- 输出:{\"action_type\":\"0\"}\n- 原因:未指定方向参数,没有方向机会输出{\"action_type\":\"0\"}\n\n### 3.2、目标描述模糊\n\n- 指令:\"悬停在那个位置\"\n- 输出:{\"action_type\":\"0\"}\n- 原因:未明确目标特征\n\n### 3.3、非法方向指令\n\n- 指令:\"向西北方飞行2米\"\n- 输出:{\"action_type\":\"0\"}\n- 原因:仅支持六轴直角方向\n\n### 3.4、冲突指令\n\n- 指令:\"降落并上升\"\n- 输出:{\"action_type\":\"land\"}\n- 原因:执行首个有效动作\n\n### 4、动态参数处理\n\n- #### **数值解析规则**:\n\n \"两米\"→2.0 / \"五十厘米\"→0.5 / \"1.5m\"→1.5 / \"2km\"→2000\n\n- **方向词兼容**:\n \"前进\"=\"前\" / \"后退\"=\"后\" / \"上升\"=\"上\" / \"下降\"=\"下\"\n\n- **默认值触发条件**:\n 当指令包含动作但未指定参数时自动激活默认值\n\n### 3.6、执行优先级矩阵\n\n| 指令特征 | 动作类型 | 处理方式 |\n| ----------------- | ---------- |---------------|\n| 含\"起飞\"+高度 | take_off | 提取高度值,高度转换单位m |\n| 含\"降落\"/\"着陆\" | land | 提取目标物 |\n| 含方向词+距离 | move | 校验方向有效性,距离转化为m |\n| 含\"悬停\"+目标描述 | spot_hover | 保留完整描述文本 |\n| 参数不全 | 0 | 立即终止 |\n| 包含否定词 | 0 | 忽略整条指令 |\n\n,输入内容:\n向前移动1.3米"}, {"role": "assistant", "content": "{'action_type': 'move', 'params': {'orientation': '前', 'distance': 1.3}}"}]} prompt = new_dict["messages"][0]["content"] <img width="702" height="490" alt="Image" src="https://github.com/user-attachments/assets/1251deba-afa7-4cbc-bdb2-21e4911a46fb" />
GiteaMirror added the model label 2026-04-12 20:45:58 -05:00
Author
Owner

@zhangnn520 commented on GitHub (Sep 26, 2025):

我想知道怎么避免再出现类似的问题,当文本比较短的时候返回内容相对正常一些,但是随着输出内容变得很多的时候,就会出现以上文本

<!-- gh-comment-id:3336961358 --> @zhangnn520 commented on GitHub (Sep 26, 2025): 我想知道怎么避免再出现类似的问题,当文本比较短的时候返回内容相对正常一些,但是随着输出内容变得很多的时候,就会出现以上文本
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/ollama#8250