撰写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