通过设置合适的提示词,为智能体设定角色和处理逻辑。智能体会根据大语言模型对人物设定和回复逻辑的理解,来响应用户问题。因此提示词编写的越清晰明确,智能体的回复也会越符合预期。可以在提示词中指定用工作流作逻辑处理,实现通过prompt无法实现的功能。
在http://localhost/apps页面点击“创建空白应用”,选择“工作流”。填写应用名,点击创建。依次创建三个工作流:
importrandom
fromitertoolsimportpermutations, product
defmain() ->dict:
whileTrue:
numbers = []
whilelen(numbers) <4:
num = random.randint(1,13)
ifnumnotinnumbers:
numbers.append(num)
res = generate_answer(numbers)
# 确保生成的随机数能计算出24
ifres['code'] =='ok':
return{'numbers': numbers}
defgenerate_answer(numbers):
iflen(numbers) !=4:
return{'code':'error','msg':"随机数个数不正确"}
operations = ['+','-','*','/']
fornum_perminpermutations(numbers):
foropsinproduct(operations, repeat=3):
# 尝试所有不同的括号组合
expressions = [
f'(({num_perm[0]}{ops[0]}{num_perm[1]}){ops[1]}{num_perm[2]}){ops[2]}{num_perm[3]}',
f'({num_perm[0]}{ops[0]}({num_perm[1]}{ops[1]}{num_perm[2]})){ops[2]}{num_perm[3]}',
f'({num_perm[0]}{ops[0]}{num_perm[1]}){ops[1]}({num_perm[2]}{ops[2]}{num_perm[3]})',
f'{num_perm[0]}{ops[0]}(({num_perm[1]}{ops[1]}{num_perm[2]}){ops[2]}{num_perm[3]})',
f'{num_perm[0]}{ops[0]}({num_perm[1]}{ops[1]}({num_perm[2]}{ops[2]}{num_perm[3]}))',
]
forexprinexpressions:
try:
ifeval(expr) ==24:
return{'code':'ok','answer': expr}
exceptZeroDivisionError:
continue
return{'code':'error'}defmain(expression:str) ->dict:
try:
val =eval(expression)
ifval ==24:
return{'code':'ok','msg':'ok'}
else:
return{'code':'error','msg':f"表达式{expression}计算结果为{val}, 不是24"}
exceptExceptionase:
return{'code':'error','msg':f"计算出错。{e}"}fromitertoolsimportpermutations, product
importjson
defmain(numbers:str) ->dict:
numbersArray = json.loads(numbers)
iflen(numbersArray) !=4:
return{'code':'error','msg':"随机数个数不正确",'answer':''}
operations = ['+','-','*','/']
fornum_perminpermutations(numbersArray):
foropsinproduct(operations, repeat=3):
# 尝试所有不同的括号组合
expressions = [
f'(({num_perm[0]}{ops[0]}{num_perm[1]}){ops[1]}{num_perm[2]}){ops[2]}{num_perm[3]}',
f'({num_perm[0]}{ops[0]}({num_perm[1]}{ops[1]}{num_perm[2]})){ops[2]}{num_perm[3]}',
f'({num_perm[0]}{ops[0]}{num_perm[1]}){ops[1]}({num_perm[2]}{ops[2]}{num_perm[3]})',
f'{num_perm[0]}{ops[0]}(({num_perm[1]}{ops[1]}{num_perm[2]}){ops[2]}{num_perm[3]})',
f'{num_perm[0]}{ops[0]}({num_perm[1]}{ops[1]}({num_perm[2]}{ops[2]}{num_perm[3]}))',
]
forexprinexpressions:
try:
ifeval(expr) ==24:
return{'code':'ok','msg':'ok','answer': expr}
exceptZeroDivisionError:
continue
return{'code':'error','msg':'error','answer':''}你是一个24点游戏助手。
- 开始游戏时,你需要生成一组随机数,提示用户回答,然后使用工作流check_answer校验用户的回答。
- 如果用户表示回答不了问题,请使用工作流generate_answer生成答案。
- 用户可以向你提供一组数字提问如何计算,你需要使用工作流generate_answer生成答案。本文以24点游戏智能体为案例,展示了Dify基于工作流的Agent应用开发。通过把工作流发布为工具,Agent通过推理可以智能调用相应工作流解决问题。
#智能体开发#Dify工作流开发 #AI应用开发
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |