成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

智能體開(kāi)發(fā)實(shí)戰(zhàn) | 基于Dify自定義工作流工具構(gòu)建游戲智能體

人工智能
Dify是一款開(kāi)源的大語(yǔ)言模型應(yīng)用開(kāi)發(fā)平臺(tái),旨在降低AI應(yīng)用的開(kāi)發(fā)門(mén)檻,幫助開(kāi)發(fā)者和企業(yè)快速構(gòu)建、部署及管理生成式AI應(yīng)用。本文以24點(diǎn)游戲智能體為案例,展示了Dify基于工作流的Agent應(yīng)用開(kāi)發(fā)。通過(guò)把工作流發(fā)布為工具,Agent通過(guò)推理可以智能調(diào)用相應(yīng)工作流解決問(wèn)題。

前言

Dify是一款開(kāi)源的大語(yǔ)言模型應(yīng)用開(kāi)發(fā)平臺(tái),旨在降低AI應(yīng)用的開(kāi)發(fā)門(mén)檻,幫助開(kāi)發(fā)者和企業(yè)快速構(gòu)建、部署及管理生成式AI應(yīng)用。

Dify允許用戶(hù)在畫(huà)布上構(gòu)建和測(cè)試功能強(qiáng)大的AI工作流。工作流通過(guò)將復(fù)雜任務(wù)分解為更小的步驟(節(jié)點(diǎn)),有效降低了系統(tǒng)的復(fù)雜度。這種方法減少了對(duì)提示詞技術(shù)和模型推理能力的依賴(lài),從而提升了 LLM 在處理復(fù)雜任務(wù)時(shí)的性能,同時(shí)增強(qiáng)了系統(tǒng)的可解釋性、穩(wěn)定性和容錯(cuò)性。

本文以實(shí)現(xiàn)24點(diǎn)游戲?yàn)槔?4點(diǎn)的游戲規(guī)則:給出一組4個(gè)隨機(jī)整數(shù)(1至13之間,且不重復(fù)),用加、減、乘、除(可加括號(hào))把給出的4個(gè)數(shù)字算成24,每個(gè)數(shù)必須用一次且只能用一次。

這個(gè)智能體需要具備如下能力:

  • 出題:生成一組4個(gè)隨機(jī)整數(shù)(1至13之間,且不重復(fù)),并確保生成的隨機(jī)數(shù)能計(jì)算出24。
  • 校驗(yàn)用戶(hù)輸入的表達(dá)式計(jì)算結(jié)果是否為24。
  • 解題:根據(jù)用戶(hù)給出的隨機(jī)數(shù),生成答案。

通過(guò)設(shè)置合適的提示詞,為智能體設(shè)定角色和處理邏輯。智能體會(huì)根據(jù)大語(yǔ)言模型對(duì)人物設(shè)定和回復(fù)邏輯的理解,來(lái)響應(yīng)用戶(hù)問(wèn)題。因此提示詞編寫(xiě)的越清晰明確,智能體的回復(fù)也會(huì)越符合預(yù)期??梢栽谔崾驹~中指定用工作流作邏輯處理,實(shí)現(xiàn)通過(guò)prompt無(wú)法實(shí)現(xiàn)的功能。

創(chuàng)建工作流工具

在http://localhost/apps頁(yè)面點(diǎn)擊“創(chuàng)建空白應(yīng)用”,選擇“工作流”。填寫(xiě)應(yīng)用名,點(diǎn)擊創(chuàng)建。依次創(chuàng)建三個(gè)工作流:

  • generate_random_numbers:為24點(diǎn)游戲生成一組隨機(jī)數(shù)
  • check_answer:校驗(yàn)表達(dá)式計(jì)算結(jié)果是否為24
  • generate_answer:根據(jù)一組隨機(jī)數(shù)生成24點(diǎn)游戲的答案

工作流1:generate_random_numbers

整體流程如下圖:

圖片

  • 名稱(chēng):generate_random_numbers
  • 描述:為24點(diǎn)游戲生成一組隨機(jī)數(shù)
  • 開(kāi)始節(jié)點(diǎn): 用默認(rèn)配置,無(wú)需添加輸入字段
  • 代碼執(zhí)行節(jié)點(diǎn)

圖片

  • 輸入變量:無(wú)
  • 輸出變量:numbers,類(lèi)型為Array[Number]
  • 代碼:
import random
from itertools import permutations, product

def main() -> dict:
    while True:
        numbers = []
        while len(numbers) < 4:
            num = random.randint(1, 13)
            if num not in numbers:
                numbers.append(num)
        res = generate_answer(numbers)
        # 確保生成的隨機(jī)數(shù)能計(jì)算出24
        if res['code'] == 'ok':
            return {'numbers': numbers}

def generate_answer(numbers):
    if len(numbers) != 4:
        return {'code': 'error', 'msg': "隨機(jī)數(shù)個(gè)數(shù)不正確"}
    
    operations = ['+', '-', '*', '/']
    for num_perm in permutations(numbers):
        for ops in product(operations, repeat=3):
            # 嘗試所有不同的括號(hào)組合
            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]}))',
            ]
            for expr in expressions:
                try:
                    if eval(expr) == 24:
                        return {'code': 'ok', 'answer': expr}
                except ZeroDivisionError:
                    continue
    return {'code': 'error'}
  • 結(jié)束節(jié)點(diǎn)輸出變量numbers的參數(shù)值為引用“代碼執(zhí)行”節(jié)點(diǎn)的輸出變量numbers。

圖片

  • 運(yùn)行點(diǎn)擊右上角的“運(yùn)行”,驗(yàn)證是否可以正確輸出一組隨機(jī)數(shù)

圖片

  • 發(fā)布工作流測(cè)試通過(guò)后,點(diǎn)擊右上角的“發(fā)布”按鈕。
  • 發(fā)布為工具發(fā)布成功后,點(diǎn)擊“發(fā)布為工具”

圖片

填入工具調(diào)用名稱(chēng)和工具描述,并保存。

圖片

工作流2:check_answer

整體流程如下圖:

圖片

  • 名稱(chēng):check_answer
  • 描述:校驗(yàn)表達(dá)式計(jì)算結(jié)果是否為24
  • 開(kāi)始節(jié)點(diǎn)

     輸入?yún)?shù)

     expression:類(lèi)型為String,顯示名稱(chēng)為“表達(dá)式”

? 代碼執(zhí)行節(jié)點(diǎn)

   ? 輸入變量:

      expression,引用開(kāi)始節(jié)點(diǎn)的expression變量

   ? 輸出變量:

      code,類(lèi)型為String 

      msg, 類(lèi)型為String

  • 代碼
def main(expression:str) -> dict:
    try:
        val = eval(expression)
        if val == 24:
            return {'code': 'ok', 'msg':'ok'}
        else:
            return {'code': 'error', 'msg': f"表達(dá)式{expression}計(jì)算結(jié)果為{val}, 不是24"}
    except Exception as e:
        return {'code': 'error', 'msg': f"計(jì)算出錯(cuò)。{e}"}
  • 結(jié)束節(jié)點(diǎn)

     輸出變量

        code,引用代碼執(zhí)行節(jié)點(diǎn)的code輸出變量

        msg, 引用代碼執(zhí)行節(jié)點(diǎn)的msg輸出變量

  • 測(cè)試并發(fā)布工作流
  • 發(fā)布為工具

     發(fā)布成功后,點(diǎn)擊”發(fā)布為工具“。填入工具調(diào)用名稱(chēng)和工具描述,并保存。

圖片

工作流3:generate_answer

整體流程如下圖:

圖片

  • 名稱(chēng):generate_answer
  • 描述:根據(jù)一組隨機(jī)數(shù)生成24點(diǎn)游戲的答案

     開(kāi)始節(jié)點(diǎn)

         輸入?yún)?shù)

            numbers:類(lèi)型為String,顯示名稱(chēng)為“一組隨機(jī)整數(shù),JSON格式”

  • 代碼執(zhí)行節(jié)點(diǎn)

  • 輸入變量

     numbers,引用開(kāi)始節(jié)點(diǎn)的numbers變量

? 輸出變量

      code,類(lèi)型為String

      msg, 類(lèi)型為String

      answer, 類(lèi)型為String

   ? 代碼

from itertools import permutations, product
import json

def main(numbers:str) -> dict:
    numbersArray = json.loads(numbers)
    if len(numbersArray) != 4:
        return {'code': 'error', 'msg': "隨機(jī)數(shù)個(gè)數(shù)不正確", 'answer':''}
    
    operations = ['+', '-', '*', '/']
    for num_perm in permutations(numbersArray):
        for ops in product(operations, repeat=3):
            # 嘗試所有不同的括號(hào)組合
            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]}))',
            ]
            for expr in expressions:
                try:
                    if eval(expr) == 24:
                        return {'code': 'ok', 'msg':'ok', 'answer': expr}
                except ZeroDivisionError:
                    continue
    return {'code': 'error', 'msg': 'error', 'answer':''}
  • 結(jié)束節(jié)點(diǎn)

圖片

  • 輸出變量

     code,引用代碼執(zhí)行節(jié)點(diǎn)的code輸出變量

     msg, 引用代碼執(zhí)行節(jié)點(diǎn)的msg輸出變量

     answer, 引用代碼執(zhí)行節(jié)點(diǎn)的answer輸出變量

  • 測(cè)試并發(fā)布工作流
  • 發(fā)布為工具

     發(fā)布成功后,點(diǎn)擊”發(fā)布為工具“。填入工具調(diào)用名稱(chēng)和工具描述,并保存。

圖片

創(chuàng)建Agent應(yīng)用

在http://localhost/apps頁(yè)面點(diǎn)擊“創(chuàng)建空白應(yīng)用”,選擇“Agent”。填寫(xiě)應(yīng)用名,點(diǎn)擊創(chuàng)建,進(jìn)入編排界面。編排界面如下:圖片

  • 設(shè)置提示詞內(nèi)容為:
你是一個(gè)24點(diǎn)游戲助手。
- 開(kāi)始游戲時(shí),你需要生成一組隨機(jī)數(shù),提示用戶(hù)回答,然后使用工作流check_answer校驗(yàn)用戶(hù)的回答。
- 如果用戶(hù)表示回答不了問(wèn)題,請(qǐng)使用工作流generate_answer生成答案。
- 用戶(hù)可以向你提供一組數(shù)字提問(wèn)如何計(jì)算,你需要使用工作流generate_answer生成答案。
  • 添加工具把3個(gè)工作流添加為工具。
  • 選擇模型使用qwen-plus
  • 調(diào)試和預(yù)覽在下方輸入內(nèi)容和Agent進(jìn)行游戲互動(dòng)

圖片

  • 測(cè)試通過(guò)后,點(diǎn)擊右上角的“發(fā)布”按鈕。
  • 發(fā)布后,點(diǎn)擊“運(yùn)行”即可打開(kāi)應(yīng)用的訪(fǎng)問(wèn)鏈接。

總結(jié)

本文以24點(diǎn)游戲智能體為案例,展示了Dify基于工作流的Agent應(yīng)用開(kāi)發(fā)。通過(guò)把工作流發(fā)布為工具,Agent通過(guò)推理可以智能調(diào)用相應(yīng)工作流解決問(wèn)題。


責(zé)任編輯:龐桂玉 來(lái)源: AI大模型應(yīng)用開(kāi)發(fā)
相關(guān)推薦

2025-06-19 03:30:00

智能體DifyMCP

2025-04-29 08:00:00

Rowboat多智能體人工智能

2025-06-06 10:01:25

2025-04-28 09:10:00

智能體Agent工作流

2025-06-17 01:00:00

Dify智能體RAG

2025-04-07 02:00:00

2025-05-22 08:51:48

2025-04-14 00:22:00

2025-04-11 10:10:16

AI智能體工作流程

2025-05-23 00:01:00

AIDify智能體Java

2025-06-09 01:00:00

2025-03-04 08:42:19

2023-12-08 13:47:29

AI工具ChatGPT

2024-11-11 09:47:00

AI開(kāi)源

2025-05-20 08:00:45

2025-03-12 13:04:01

2024-11-15 14:42:00

AI模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 午夜激情网| 网页av| 亚洲精品久久久久久国产精华液 | 精品国产一区二区三区久久狼黑人 | 99精品视频在线 | 国产精品99久 | 成人免费看 | 91精品国产91久久久久久最新 | 国家一级黄色片 | 中文一区 | 欧美日本韩国一区二区 | 视频一区 亚洲 | 日本成人免费网站 | 亚洲福利一区 | 性做久久久久久免费观看欧美 | 亚洲一区国产精品 | 久久久精品综合 | 精品视频一区二区三区四区 | 国产成在线观看免费视频 | 狠狠夜夜 | 天天躁日日躁aaaa视频 | 亚洲日韩欧美一区二区在线 | 日韩视频精品在线 | 久久久精品天堂 | 最新中文字幕在线播放 | 国产传媒毛片精品视频第一次 | 欧美精品乱码久久久久久按摩 | 欧美一级α片 | 日韩欧美三区 | 亚洲国产精品区 | 色综合久 | 超碰精品在线 | 免费观看一级视频 | 中文字幕一区在线观看视频 | 国产中文视频 | 国产剧情一区 | 久久久久国产一区二区三区四区 | 亚洲视频欧美视频 | 日本中文字幕在线视频 | 国产精品综合色区在线观看 | 久久亚洲一区二区三区四区 |