更新时间:2025-07-15 13:13:16

撰写Dolphin-Lang的模式选择

撰写Dolphin-Lang有两种模式可以选择,用户可根据具体的任务情况,选择不同的模式:

  • 判断模式:适用于简单、明确的任务,任务执行路径固定,且任务之间没有依赖关系的情况,能够快速完成每个子任务。 
    • 基本语法结构:

import 工具箱a.工具1, 工具箱b.工具2

/judge/ 自然语言描述 -> 变量名

    • 示例:

import toolboxa.sendemail, toolboxb.getweather

/judge/ 查一下2025年2月28日上海的天气 -> climate

/judge/ 根据$climate写一首诗 -> poem

/judge/ 把$poem发到xxx@.cn -> result

  • 探索模式:“探索模式”在处理复杂、不确定执行路径的任务时,具有更高的灵活性,能够充分释放模型能力,生成结果。
    • 基本语法结构:

import 工具箱a.工具1, 工具箱b.工具2

/explore/ 自然语言描述 -> 变量名

    • 示例:

import toolboxa.sendemail, toolboxb.getweather

/explore/ 查一下2025年2月28日上海的天气,根据天气写一首诗,把这首诗发到xxx@.cn -> result

两种模式具体的不同点总结如下:

不同点

判断模式

探索模式

任务类型

适用于简单、明确的任务

适用于复杂、不确定的任务

执行策略

自动判断并单次调用工具或大模型完成任务

在执行过程中,大模型会动态地生成内容并调用相应的工具

灵活性

较低,任务执行路径相对固定

较高,可以根据需要动态调整执行路径

结果返回

每个语句完成后单独返回结果

执行过程中返回多步骤结果,包含每个步骤的思考和执行信息

 

Dolphin-Lang的语法与操作详解

  • 变量
    • 定义变量
      • 赋值:表达式-> 变量名
      • 追加:表达式>> 变量名

示例

@web_search(query="天气") -> result

@web_search(query="天气") >> result

    • 使用变量:变量以$ 开头,支持以下形式:
      • 简单变量:$变量名
      • 数组索引:$变量名[index]
      • 嵌套属性:$变量名.key1.key2

示例

$x

$result[0]

$a.b

    • 赋值变量:将list或dict的值赋予新的变量

示例

result值为{‘a’:[{‘b’:‘xxxx’},{‘c’:‘yyyy’}]}

answer值为 [{‘b’:‘xxxx’},{‘c’:‘yyyy’}

answer1 值为 {‘b’:‘xxxx’}

$result.a ->answer

$answer[0] ->answer1 

  • 字符串操作

str1=“abc”

    • 拼接

$str1+"de"->str2

str2的值为"abcde"

    • 嵌入

f'''gh{$str1}de''' ->str2

str2的值为"ghabcde"

    • 替换

str($str1).replace('a','e')->str2

str2的值为"ebc"

  • 列表操作

list1=[1,2,3,4]

    • 拼接

$list1+[5,6]->list2

list2值为[1,2,3,4,5,6]

    • 截断

$list1[:2]->list2

list2值为[1,2]

  • 控制流
    • 循环
      • 语法

/for/ $变量名 in $可迭代对象:

语句块

/end/

      • 示例

/for/ $text in $text_list:

      @web_search(query=$text) -> news

      /prompt/总结一下$news >> summary_list

/end/

/prompt/总结$summary_list,形成一篇文章 ->article

    • 条件判断
      • 语法

/if/ 条件表达式:

语句块

elif 条件表达式:

语句块

else:

语句块

/end/

      • 示例

@fetch_shopping_list(user_id="12345") -> shopping_list

/if/ len($shopping_list) > 10:

 @send_alert("购物清单太长了,需要精简一下!") -> alert_result

elif len($shopping_list) > 5:

@send_alert("购物清单长度适中,可以直接执行采购。") -> alert_result

else:

 @send_alert("购物清单很短,轻松完成!") -> alert_result

/end/

  • 大模型调用
    • 使用大模型完成请求
      • 语法

/prompt/自然语言描述 -> 变量名

      • 示例

/prompt/写一首诗 -> poem

  • 工具调用
    • 使用 @函数名(参数列表) 调用工具,结果通过 -> 或 >> 赋值。
      • 语法

@函数名(参数1=值1, 参数2=值2, ...) -> 变量名

      • 示例

import Agent.xxxx ,tool_box.news_search

@news_search(query=$text) -> result

      • 工具参数说明

工具参数类型可以是整形、字符串、字典、列表,示例如下:

                         @QianWenSearch_test(model=“qwen-plus”, num=3) -> result

                         @QianWenSearch_test(model=“qwen-plus”, messages=[{“role”: “user”, “content”: “你是一个有用的AI助手”},{“role”: “assistant”, “content”: “好的,我将严格按照用户的提示一步一步的执行任务。”}]) ->result

                         @生成SQL查询语句(dimensions=$parser_result.dimensions, params={“company”:[1,2,3,4],“quarter”:2}) -> res