潍坊市网站建设_网站建设公司_PHP_seo优化
2025/12/29 7:44:37 网站建设 项目流程

目录

  • 一、TextIn大模型加速器
    • 核心优势
  • 二、行业报告分析与发展建议
    • 2.1 场景描述
    • 2.2 工作流逻辑编排
    • 2.3 大模型提示词
    • 2.4 结果展示
  • 三、ParseX结合Coze API控制本地机器人
    • 3.1 场景描述
    • 3.2 工作流逻辑编排
    • 3.3 大模型提示词
    • 3.4 地图与任务描述
    • 3.5 本地调用
    • 3.6 结果展示

一、TextIn大模型加速器

随着大模型技术的快速发展,大量结构化数据需求日益增大,但网络上绝大多数数据都是非结构化的。在大模型处理过程中,数据前处理阶段的结构化程度,对后续阶段的语义理解与逻辑推理能力有着极大地决定作用。

TextIn解析引擎正从应用工具演变为研究基础设施,不仅加速了大模型在文档智能领域的研究进展,更重要的是,它通过提供真实、复杂、多样化的文档处理场景,推动了大模型在多模态理解、复杂推理和专业领域应用等方面的根本性突破。

核心优势

  • 支持任意复杂布局:将任意版式的文档拆解为语义完整的段落,并按阅读顺序还原,更加适配大模型。
  • 多元素高精度解析:准确提取标题、公式、图表、手写体、印章、跨页段落、页眉页脚、表单字段等各种元素,同时具备行业领先的表格识别能力,轻松解决合并单元格、跨页表格、无线表格等识别难题。
  • 强大的语义理解和上下文感知:捕捉更多版面元素间的语义关系,让大模型更加读懂一份文档。
  • 强大的预处理工具:无缝集成TextIn平台中的图像处理能力,文档带水印、图片有弯曲、模糊,都能搞定。
  • 高精度坐标还原:JSON结果包含高精度的页面、元素、字符级坐标数据,方便人工复核。
  • 极简、智能、灵活的语义抽取:xParse提供prompt模式和Schema模式两种抽取规则定制,帮助您根据业务需要实现更灵活的文档信息精准提取。
  • 开发者友好:提供清晰的API文档和灵活的集成方式,支持FastGPT、Coze、CherryStudio等主流平台。

在体验TextIn xParse的过程中,使用它作为大模型输入端的前处理插件,对文档作结构化处理,并以markdown 和 JSON 的形式输出给后续的大模型,结合火山引擎探索了其在机器人行业报告分析与在VLA研究中的使用。

二、行业报告分析与发展建议

首先是一个比较简单的文档解析工作流,主要是根据提示词对给定文档作定向解析,并根据文档内容给出知道建议。

2.1 场景描述

信息碎片化时代,精准搜索有效信息并梳理总结成为了一件困难的事情,经常大部分时间都花在整理信息上。找到的文献、报告等大多数篇幅很长,人工梳理耗时耗力,有些读下来不是想要的又浪费时间。

所以借助 Coze + TextIn 搭建了一个行业报告分析与发展建议工作流,流程泳道图如下:

2.2 工作流逻辑编排

由于ParseX插件的加持,整个工作流只需要4个节点即可实现该功能:

其中,ParseX节点必要输入为文件路径,app_id和secret_code为TextIn的开发者信息与密钥。

这一步,ParseX作为文档解析预处理引擎,对文档内容进行标准化、增强、优化中间表示,结构识别与标记,并进行内容提取与初分类。针对下一步的大模型处理,降低了大模型的计算负担,提升了大模型的准确性。基本理念就是:让大模型专注于它最擅长的语义理解和推理任务,而将繁琐的、模式化的预处理工作交给专门优化的工具完成。

app_id和secret_code对应TextIn工作台页面的x-ti-app-id和x-ti-secret-code。

大模型选择豆包·1.6·lite·251015,比较轻量化,对于简单任务,不追求速度的话,还是满足的。主要是其他模型消耗的tokens太多了,哈哈。

大模型的输入选择ParseX节点的markdown输出,进行下一步的内容解析。

值得注意的是,ParseX节点不仅有markdown输出,还有更丰富的其他信息。这里只是简单的文档内容解析,对于其他更加复杂的任务,ParseX给出了更加精细的文档信息输出。

2.3 大模型提示词

通过提示词,限定大模型对文档内容的解析方向并给出定制输出。

2.4 结果展示

基于具身智能的智慧工厂创新应用白皮书(2025)(31页)

31页文档,ParseX处理耗时 6s

具身智能复合移动机器人产业发展蓝皮书(2025)(72页)

72页文档,ParseX处理耗时 14s

2025人工智能发展白皮书(144页)

144页文档,ParseX处理耗时 36s

三、ParseX结合Coze API控制本地机器人

TextIn大模型加速器+火山引擎,只能做文档分析吗?

不,能做的还很多,比如可以将意图通过语音或文档的形式输入给云端智能体,通过提示词或更专业的知识库限定智能体的解析方向与输出,打造一个机器人任务规划专家,实现一个从 Language 到 Action 的端到端服务。

3.1 场景描述

目前机器人任务规划通常是平台端处理,交互基本是在平台端的UI界面按照给定的格式填写任务配置。

然而,对于生活场景来说,最理想的人机交互方式是自然语言交互,所以借助这次体验,做了一个简单的从自然语言到动作的demo。流程泳道图如下:

3.2 工作流逻辑编排

该demo实现解析一段导航指令描述,将预言描述转换为机器人可以理解的json格式动作集。当然不仅仅是导航,也可以实现其他执行器的控制,这里仅以导航为例。

由于需要理解地图信息包括图片,这里介入了图片理解插件。任务描述通过ParseX解析后,和地图一起传给imgUnderstand节点进行处理,后续传给大模型进行进一步的语义与意图解析并生成动作集。

3.3 大模型提示词

通过提示词,限定大模型对任务描述的解析方向并给出定制输出。

完整提示词:

# 角色:{#InputSlot placeholder="角色名称" mode="input"#}机器人任务规划专家{#/InputSlot#} {#InputSlot placeholder="角色概述和主要职责的一句话描述" mode="input"#}主要职责为将任务描述分解为机器人可执行的原子动作序列。{#/InputSlot#} ## 目标: {#InputSlot placeholder="角色的工作目标,如果有多目标可以分点列出,但建议更聚焦1-2个目标" mode="input"#}分析机器人行业技术动向,预测机器人行业发展方向。{#/InputSlot#} ## 技能: 1. {#InputSlot placeholder="为了实现目标,角色需要具备的技能1" mode="input"#}多模态任务理解与解析{#/InputSlot#} 2. {#InputSlot placeholder="为了实现目标,角色需要具备的技能2" mode="input"#}分层任务分解与规划{#/InputSlot#} 3. {#InputSlot placeholder="为了实现目标,角色需要具备的技能3" mode="input"#}资源感知与优化调度{#/InputSlot#} 4. {#InputSlot placeholder="为了实现目标,角色需要具备的技能4" mode="input"#}鲁棒执行与异常处理{#/InputSlot#} ## 工作流: 1. {#InputSlot placeholder="描述角色工作流程的第一步" mode="input"#}分析{{input}}任务的核心目标与约束条件{#/InputSlot#} 2. {#InputSlot placeholder="描述角色工作流程的第二步" mode="input"#}结合{{input}}与{{map}}地图,建立坐标系,单位:m,度{#/InputSlot#} 3. {#InputSlot placeholder="描述角色工作流程的第三步" mode="input"#}结合{{input}}与{{map}}按逻辑顺序分解步骤{#/InputSlot#} 4. {#InputSlot placeholder="描述角色工作流程的第四步" mode="input"#}为每一步分配合适的原子动作{#/InputSlot#} 5. {#InputSlot placeholder="描述角色工作流程的第五步" mode="input"#}考虑异常处理(如物体未找到){#/InputSlot#} ## 输出格式: {#InputSlot placeholder="如果对角色的输出格式有特定要求,可以在这里强调并举例说明想要的输出格式" mode="input"#}{ "plan_id": "{{任务唯一标识}}", "plan": [ { "step": {{步骤序号}}, "action": "{{动作类型}}", "action_id": "{{步骤唯一ID}}", "parameters": {{动作参数对象}}, "pre_conditions": [ { "type": "{{条件类型}}", "key": "{{状态键名}}"?, "value": {{期望值}}?, "operator": "{{比较符}}"?, "tolerance": {{容差}}?, "min_confidence": {{置信度}}? } ], "post_conditions": [...], // 结构同pre_conditions "estimated_duration": {{预估秒数}}, "retry_policy": { "max_attempts": {{最大尝试次数}}, "retry_delay": {{重试延迟秒数}}?, "on_failure": "{{备用动作ID}}"? // 引用fallback_actions中的键 } } // ... 更多步骤 ] } 其中,parameters` 对象的内容因 `action` 而异。以下是常见动作的参数模板: navigate_to(导航) { "waypoint_id": "string", // 【必需】预定义路点ID "coordinate": { // 【必需】路点坐标,与waypoint_id互补说明,单位:m,度 "x": "number", "y": "number", "z": "number", "theta": "number" }, "speed_limit": "number" // 【可选】速度限制,单位 m/s } confirm_position(确认位置) { "waypoint_id": "string", // 【必需】预定义路点ID "coordinate": { // 【必需】路点坐标,与waypoint_id互补说明,单位:m,度 "x": "number", "y": "number", "z": "number", "theta": "number" } } scan_area(扫描) { "scan_area_id": "string", // 【必需】预定义扫描区域ID "target_object_class": ["string"], // 【可选】目标物体类型列表 "scan_mode": "string", // 【可选】扫描模式,如 “NORMAL”, “DEEP” "timeout": "integer" // 【可选】超时时间,单位:秒 } grasp(抓取) { "object_id": "string", // 【必需】目标物体ID "grasp_pose": { // 【可选】抓取位姿 "x": "number", "y": "number", "z": "number", "roll": "number", "pitch": "number", "yaw": "number" }, "force_limit": "number" // 【可选】抓取力限制,单位:N } wait(等待) { "duration": "integer" // 【必需】等待时长,单位:秒 } {#/InputSlot#} ## 限制: - {#InputSlot placeholder="描述角色在互动过程中需要遵循的限制条件1" mode="input"#}原子动作库 1. navigate_to(location): 导航到地图坐标系中的指定位置(如 `仓库-A区-货架3`)。 2. grasp(object, quantity): 使用机械臂抓取指定类别和数量的物体(如 `红色螺丝`, `2盒`)。 3. place(object, location): 将抓取的物体放置到指定位置。 4. scan_area(area): 使用视觉传感器扫描指定区域,识别和定位目标物体。 5. confirm_position(): 通过地标或传感器确认已精确到达目标位置。 6. wait(duration): 等待指定秒数,用于避让或同步。{#/InputSlot#} - {#InputSlot placeholder="描述角色在互动过程中需要遵循的限制条件2" mode="input"#}地图yaml文件基本参数详解 image: my_map.png 作用:指定地图图像文件 说明: my_map.png 是实际的地图图像文件(png格式) 每个像素表示该位置是障碍物还是自由空间 mode: trinary 作用:指定地图的占用值解释模式 可选值: trinary(默认):三值模式 像素值 0-196:自由空间(白色) 像素值 197-252:未知区域(灰色) 像素值 253-255:障碍物(黑色) scale:缩放模式 像素值线性映射到占用概率 raw:原始模式 直接使用像素值作为占用概率 Nav2 推荐使用:trinary resolution: 0.050 作用:地图分辨率(米/像素) 说明: 0.050 表示每个像素代表现实世界的 0.05 米(5厘米) 这是地图的比例尺 计算示例: 100像素 × 0.05米/像素 = 5米 地图尺寸为 400×400 像素时: 宽度:400 × 0.05 = 20米 高度:400 × 0.05 = 20米 origin: [-0.966, -2.069, 0] 作用:地图左下角在世界坐标系中的位置 格式:[x, y, yaw] 说明: -0.966:地图左下角的 X 坐标(米) -2.069:地图左下角的 Y 坐标(米) 0:地图的旋转角度(弧度),通常为 0 重要: 这是地图坐标系到世界坐标系的变换 图像像素 (0,0) 对应世界坐标 (origin_x, origin_y) 图像像素 (width,height) 对应世界坐标 (origin_x+widthresolution, origin_y+heightresolution) negate: 0 作用:是否反转图像的黑白意义 可选值: 0:不反转(默认) 黑色像素 = 障碍物 白色像素 = 自由空间 1:反转 黑色像素 = 自由空间 白色像素 = 障碍物 通常设置:0(保持原样) occupied_thresh: 0.65 作用:判断为障碍物的阈值 范围:0.0 到 1.0 说明: 像素值 > 0.65(65%)被认为是障碍物 在 trinary 模式下: 像素值 253-255(99.2%-100%)> 0.65,所以是障碍物 调整建议: 值调高(如 0.8):更严格,减少误判为障碍物 值调低(如 0.5):更宽松,更多区域被认为是障碍物 free_thresh: 0.196 作用:判断为自由空间的阈值 范围:0.0 到 1.0 说明: 像素值 < 0.196(19.6%)被认为是自由空间 在 trinary 模式下: 像素值 0-196(0%-76.9%)< 0.196,所以是自由空间 注意:必须小于 occupied_thresh {#/InputSlot#}

3.4 地图与任务描述

使用tb3_simulation的环境,需要提前自己建好图,运行导航仿真环境:

ros2 launch nav2_bringup tb3_simulation_launch.py slam:=False map:=my_map.yaml

启动环境并初始化定位后,如下图:

示例任务指定机器人行走到地图的右上角区域,描述如下,保存到 command.txt 文件中:

地图格式说明: image: my_map.png mode: trinary resolution:0.025origin:[-0.966, -2.069,0]negate:0occupied_thresh:0.65free_thresh:0.196任务说明:1.走到地图右上角的区域,停留5s

地图如下,保存到 my_map.png 中,

这里注意,本来地图格式为 my_map.pgm,但Coze的大模型不支持 .pgm 格式,所以妥协了一下,但转换时需要注意不要改变位深度,不好会损失精度。

3.5 本地调用

Coze提供了本地调用API,详见:https://www.coze.cn/open/playground

该工作流python调用示例如下:

""" This example describes how to use the workflow interface to chat. """importsysimportjsonimportparse_plan# Our official coze sdk for Python [cozepy](https://github.com/coze-dev/coze-py)fromcozepyimportCOZE_CN_BASE_URL# Get an access_token through personal access token or oauth.coze_api_token='cztei_xxxxxxxxxxxxxxxxxxxxxxxx'# The default access is api.coze.com, but if you need to access api.coze.cn,# please use base_url to configure the api endpoint to accesscoze_api_base=COZE_CN_BASE_URLfromcozepyimportCoze,TokenAuth,Message,ChatStatus,MessageContentType# noqadefword_to_action():# Init the Coze client through the access_token.coze=Coze(auth=TokenAuth(token=coze_api_token),base_url=coze_api_base)# Create a workflow instance in Coze, copy the last number from the web link as the workflow's ID.workflow_id='xxxxxxxxxxxxxxxxx'iflen(sys.argv)<2:sys.exit(1)command_path=sys.argv[1]print(f"uploading command file:{command_path}")command=coze.files.upload(file=command_path)print(f"uploaded command file:{command.file_name}\n{command}")map_path=sys.argv[2]print(f"uploading command file:{map_path}")world_map=coze.files.upload(file=map_path)print(f"uploaded command file:{world_map.file_name}\n{world_map}")parameters={"input":{"file_id":command.id},"map":{"file_id":world_map.id},}# Call the coze.workflows.runs.create method to create a workflow run. The create method# is a non-streaming chat and will return a WorkflowRunResult class.workflow=coze.workflows.runs.create(workflow_id=workflow_id,parameters=parameters)action=json.loads(json.loads(workflow.data)['output'])print("action: ",action)returnactionif__name__=="__main__":parse_plan.parse_action(word_to_action())

3.6 结果展示

运行脚本后,云端返回规划好的动作集,本地解析后发给机器人执行器:

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询