与使用GO构建的工作流引擎的自动gatgpt(通过电子邮件发送目标搜索结果的示例)
#openai #go #nocode #chatgpt

介绍。

本文展示了如何使用免费工作流引擎Dagu自动化ChatGpt。具体来说,我们将向您展示如何使用YAML定义运行Chatgpt的API并自动通过电子邮件发送结果。

什么是DAG工作流引擎?

工作流引擎是一种用于自动执行您在计算机上执行任务的工具。它不仅仅是简单地以简单的顺序执行任务,还可以指定任务之间的依赖关系,并同时同时执行任务。以下图是DAG(有向无环图)。

DAG

什么是达瓜?

Dagu是一种免费的开源DAG工作流引擎。

特征

  • 可以在没有代码的情况下创建DAG(无需编程)。
  • 所有操作,包括创建和运行DAG,都可以从浏览器中完成。
  • 只需在Mac上安装命令并使用它。

致电Chatgpt API并通过电子邮件发送答案的示例

以下是调用chatgpt的API并通过电子邮件发送结果的示例。

Example workflow

每个步骤的作用很简单。

  1. 用指定的问题致电Chatgpt API
  2. 从API响应中提取答案
  3. 将响应转换为准备发送的HTML电子邮件
  4. 发送电子邮件。

因此,您将收到一封看起来像这样的电子邮件

mail

使用chatgpt自动目标的步骤寻求问题

在本节中,目标寻求提示用于自动化目标。请注意,任何提示都可以通过重写DAG的内容以相同的方式自动化。

使用的提示:

[目标]实现目标。
a [0,0] = [目标]
a [i,1-5] =实现[i,0]的5个想法。
a [i+1,0] = a [i,1-5],这是获得[i+1,0] = a [i,1-5]

的最佳主意

使用它来计算最多i = 0-5,并将结果放在带有5行和5列的HTML表中,总共25个单元格。

安装下巴

  1. 可以使用Homebrew安装Dagu。

    brew install yohamta/tap/dagu
    
  2. 您可以通过以下命令检查安装是否成功:

    dagu version
    

启动服务器的下巴

  1. Dagu服务器可以通过以下命令启动。

    dagu server
    
  2. 在您的浏览器中访问http://localhost:8080。您应该看到与以下类似的屏幕。
    top

创建ChatGPT工作流程。

  1. 单击左侧的三行菜单。以下是您在我的环境中看到的。 list
  2. 按右上角的“新”按钮,然后输入新的dag chatgpt_goalseek_example的名称。
  3. 按右下角的“编辑”按钮。 Edit
  4. 将以下内容粘贴到编辑屏幕中并保存(“保存”按钮)。

    params: GOAL="Unique and interesting bullet-hell game."
    env:
      - OPENAI_API_KEY="ChatGPT API Key"
      - MY_EMAIL="Recipient email address"
      - FORMAT: >-
          a[0,0]=[Goal]\n
          Five ideas to achieve a[i,1-5]=a[i,0]. \n
          The best idea to achieve a[i+1,0]=a[i,1-5]. \n
          \n
          Use this to calculate up to i=0-5 and put the results into a HTML table with 5 rows and 5 columns, 25 squares in total. \n
    
    smtp:
      host: "smtp.mailgun.org"
      port: "587"
      username: "Mailgun username"
      password: "Mailgun password"
    
    steps:
    
      - name: ask chatgpt
        executor:
          type: http
          config:
            timeout: 1200
            headers:
              Authorization: "Bearer $OPENAI_API_KEY"
              Content-Type: "application/json"
            silent: true
            body: |
              { "model": "gpt-3.5-turbo", "messages": [
                  {"role": "system", "content": "Act as a state-of-art chat AI. Please output the result in a table format with 5 rows and 5 columns. Format your reply in HTML code styled with beautiful CSS."},
                  {"role": "user", "content": "[Goal]${GOAL}\n${FORMAT}"}
                ]
              }
        command: POST https://api.openai.com/v1/chat/completions
        output: API_RESPONSE
    
      - name: get result
        executor:
          type: jq
          config:
            raw: true
        command: ".choices[0].message.content"
        script: "$API_RESPONSE"
        output: MESSAGE_CONTENT
        depends:
          - ask chatgpt
    
      - name: convert escaped unicode to plain HTML
        command: "sh"
        script: |
          input="${MESSAGE_CONTENT}"
          unescaped=$(echo -e "$input" | sed 's/\\u003c/</g' | sed 's/\\u003e/>/g')
          echo "$unescaped"
        output: MESSAGE_CONTENT
        depends:
          - get result
    
      - name: send mail
        executor:
          type: mail
          config:
            to: "$MY_EMAIL"
            from: "$MY_EMAIL"
            subject: "goal seek result"
            message: "$MESSAGE_CONTENT"
        depends:
          - convert escaped unicode to plain HTML
    

设置ChatGPT API密钥和电子邮件发送服务器

  1. 设置chatgpt api键
    用您的chatgpt api键重写下面的ChatGPT API Key

    env:
      - OPENAI_API_KEY="ChatGPT API Key"
    
  2. 设置邮件发送服务器
    Mailgun注册,您可以免费发送电子邮件。使用您的MailGun用户名和密码重写以下Mailgun usernameMailgun password。您也可以使用其他电子邮件服务。

    smtp:
      host: "smtp.mailgun.org"
      port: "587"
      username: "Mailgun Username"
      password: "Mailgun Password"
    
  3. 设置收件人电子邮件地址
    将以下Recipient email address替换为您要发送ChatGpt响应的电子邮件地址。

    env:
      - MY_EMAIL="Recipient email address".
    

尝试一下并运行它。

按右上角的“开始”按钮运行DAG。在文本框中,将您想要在目标寻求提示中所要求的内容。例如,放入The best and most interesting roguelike game idea
dialog

执行状态显示在浏览器中。

status

如果发生错误,请按右上角的“重试”按钮;如果Chatgpt的API重量很重,可能会发生错误。

如果成功,您将看到以下屏幕。
success

您将收到以下电子邮件。哦,不。
Image description

概括

您可以看到,工作流引擎允许您使用无代码自动化ChatGpt API呼叫。

如果您总是运行类似的提示,则定义DAG可能很有用。

您可以通过组合Chatgpt API的多个输入和输出来做更多有趣的事情。例如,可以将ChatGPT响应传递给进一步的API以改进或转换结果,如果定义为DAG,则将Chatgpt的多个角色结合起来可能是有用的,因为可以并行调用API。

我只能梦想我们能做的事情!

达古是我使用GO语言开发的开源软件。
如果您可以参与其开发,我会很高兴。

https://github.com/yohamta/dagu