AI调用

因软件更新较快,部分文档内容与软件最新版本有所出入,请知悉。

注:

  • 使用本模块需要您具备一定的网络条件和服务商账号。
  • 数据将会发送到国外服务器,请勿发送敏感或隐私信息、法律法规规定不可传输到国外的信息。
  • 请勿使用此功能用于可能非法的活动。
  • 每种模型和服务端点之间有一定联系,请参考官方文档了解端点可用模型。
  • 每个请求的提示和响应token数量受到模型限制。
  • 请详细阅读官方文档以了解各方面知识和信息。



基本原理

Quicker动作中主要用来处理一些专用的场景,而不是连续的会话。

一般的做法是:

  • 在系统提示中,告诉AI需要扮演的角色。
  • 使用文本插值等方式拼接出完整的“提示”,告诉AI实际要生成的内容。 这里面包含指令要求和实际待处理的内容。

下面是一个中英互译的翻译动作。提示包含两个部分:

  • 如果下面的文字包含中文,则将其翻译成英文(只返回翻译结果);如果下面的文字中不包含中文,则将这些内容翻译成中文(只返回翻译结果): 告知AI,后面的内容是要翻译的实际内容,翻译的方法是根据内容里是否包含中文。
  • 通过插值将{text}文本变量的内容放在后面。这部分可能是通过获取选中文本用户输入方式得到的。


参数


【端点】目前支持Chat或Completions。

【模型】模型id。

【系统提示】用于告知AI所扮演的角色以及生成内容时的要求。

【提示】用户向AI给出的完整提示文字。AI将根据这些提示生成内容。自1.42.21版本起,支持两种形式的内容:

  • 纯文本提示词。
  • 通过json数组,提供兼容gpt-4-vision的消息内容。示例:

【最大响应Token数】token大约等于1个汉字或2/3个英文单词。建议使用0,太短时输出会被截断。每个模型有自己的提示和响应总共token数限制,较新的模型通常为4000。提示内容的token数+最大响应token数不能超过模型限制,否则会失败。

【温度】Temperature,0-1之间的数值。值越小,输出越稳定,倾向于返回置信度更高的回答。值越大,输出越随机,会更发散(创造性)。

【APIKey】从服务商获取的API秘钥。注意此信息为保密信息,

【Orgnization】APIKey对应的组织ID。可选。

【top_p】请参考官方文档。

【n】输出几个结果,将会加倍耗费token。模块只能输出一个结果,其它结果需要从原始响应中解析。

【使用流式输出】立即看到输出的一种查询方式,可将结果连续输出到文本窗口。此方式下无法获得原始响应内容、耗费的token数等信息。

【流式输出窗口标识】使用流式输出时,用于指定前面步骤打开的文本窗口。设置为INPUT_TEXT,可将内容直接模拟输入到活动窗口(窗口切换时将停止输出)。

【停止符stop】官方参考文档。遇到此内容时,接口停止输出更多结果。留空,使用推荐默认值<|endoftext|>或自定义的内容。在使用第三方接口时,请务必设置此值(或使用1.38.35以上版本),建议使用<|endoftext|>

【API网址】自定义API网址,用于使用第三方服务中转请求时使用。

  • 使用Azrue的OpenAI服务时,API网址可以设置为:https://YOUR_RESOURCE_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/{1}?api-version=2023-05-15
  • YOUR_RESOURCE_NAMEYOUR_DEPLOYMENT_NAME 替换为实际的值。{1}作为接口名称的占位符保持不动。api-version的值可根据需要修改。
  • 使用第三方网址时,可以按如下格式:https://api网址/{1} ,其中{1}作为接口名称(如chat/completions)的占位符保持不动。如,硅基流动的接口网址为https://api.siliconflow.cn/v1/{1}

【超时秒数】超时时间。

【响应格式】文本或json_object。json_object用于指示输出内容为json格式,通常需要结合使用合适的提示词,并且要避免超过token限制被中间截止。请参考OpenAI文档了解此参数的用途。

自1.43.55版本开始支持通过json文本指定自定义的内容,如json_schema。例如:

{
  "type": "json_schema",
  "json_schema": {
    "name": "math_reasoning",
    "schema": {
      "type": "object",
      "properties": {
        "steps": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "explanation": { "type": "string" },
              "output": { "type": "string" }
            },
            "required": ["explanation", "output"],
            "additionalProperties": false
          }
        },
        "final_answer": { "type": "string" }
      },
      "required": ["steps", "final_answer"],
      "additionalProperties": false
    },
    "strict": true
  }
}

【附加参数】用于为第三方接口提供额外的参数。可传入词典值,json,或匿名对象,如:

$= new {参数名 = "参数值"};

流式响应

流式输出目前无法检测错误。

流式输出有两种方式:

一、通过文本窗口显示


实现方法:

1)事先创建一个以非等待模式显示的文本窗口,设置窗口标识(建议使用‘=’作为窗口标识,相当于动作ID,以避免动作之间冲突)。


2)在AI调用模块中,启用流式输出和输出的文本窗口标识。


这样当收到新的内容后,会将内容追加到窗口中。

二、模拟输入到当前活动窗口

将“流式输出窗口标识”设置为INPUT_TEXT。此时会将内容通过模拟输入的方式发送到当前焦点窗口。 如果切换了焦点窗口,则输出会停止。

历史会话

从1.37.17版本开始支持历史消息自动发送。

可以有2种使用方式:

1)每次传入历史消息的内容,格式为json数组。

此时不需要设定会话ID,也不会输出历史消息的内容。需要开发者自行维护历史消息记录。

2)由Quicker自动保存和回传历史消息。

数据文件保存在Quicker数据文件夹\AiLogs目录中。

此时需设置这些参数:

【会话ID】每次会话前,使用“生成GUID”模块生成一个全球唯一ID作为会话ID。(只能使用GUID格式的会话ID)

【历史消息】参数中设定回传的历史消息个数。因为每次调用来回总token数量有限制,会话太长时需要抛弃更早的消息。

输出参数【历史消息】,返回历史消息对象列表,输出给文本变量时,自动转换为json格式。

建议使用会话ID作为显示会话内容的文本窗口标识,避免一个动作多次运行造成窗口冲突问题。

示例动作:AI对话测试

示例动作

更新历史

  • 20230714 Fix Azure接口地址错误。
  • 20240327 增加响应格式和附加参数的说明。增加提示词支持gpt-4-vision请求格式。
  • 20241219 增加自定义相应格式的说明。



反馈与讨论

功能建议 · 108
张立行 6天19小时前 张立行 1天16小时前
使用问题 · 107
CantonGirl 28天11小时前 CL 24天23小时前
使用问题 · 327
用户mFOGov4fBQA 2024-10-15 21:19 化工兔 26天19小时前
使用问题 · 527
用户b23bUA3BAgA 2024-08-15 23:57 CL 2024-08-16 07:34
BUG反馈 · 562
张立行 2024-06-18 19:27 CL 2024-06-18 20:53
语雀在语雀上查看