跳到主要内容

AI 调用

调用 OpenAI 兼容的 Chat / Completions 接口。非兼容接口请用 HTTP请求 自己处理。

当前模块定义

sys:ai网络服务Action
标准模块
输入 21 · 输出 9 · 枚举 2

输入参数

  • 接口端点endpointEnum必填
    填写 固定输入默认 chat
    Chat默认chat
    Completionscompletions
  • 模型modelText可选

    适用于可能适用于不同的端点,请参考官方文档使用。

    填写 固定输入
  • API网址apiUrlFormatText可选

    可选,使用自定义的API服务器时使用。请参考模块文档了解如何设置。

    填写 固定输入
  • APIKeyapiKeyText可选
    填写 固定输入
  • OrgnizationapiOrgText可选

    可选

    填写 固定输入
  • 系统提示词systemPromptText可选

    告知AI所需要扮演的角色和要求。如"你是一个专业的翻译助手"。

    填写 固定输入条件 仅:chat
  • 会话IDsessionIdText可选

    可选。每次会话请生成新的GUID格式会话ID,设置后将自动保存会话历史。

    填写 固定输入条件 仅:chat
  • 历史消息historyMessagesText可选

    可选。存放历史消息的json数组,格式请参考文档说明。设定会话ID后,也可直接写发送的历史会话条数。

    填写 固定输入条件 仅:chat
  • 提示词promptText可选

    要为其生成补全的完整提示内容。

    填写 固定输入条件 仅:chat, completions
  • 最大响应Token数maxTokensInteger可选

    最大响应输出token数(max_completion_tokens)

    填写 固定输入默认 0
  • 温度temperatureNumber可选

    用于控制输出的随机性,请根据模型文档设置温度参数。

    填写 固定输入默认 0.2
  • top_ptopPNumber可选
    填写 固定输入条件 仅:chat, completions默认 1
  • nnInteger可选

    对每个问题生成几个结果,将会耗费更多token。

    填写 固定输入默认 1
  • 超时秒数expireSecondsNumber可选

    最长等待秒数

    填写 固定输入默认 120
  • 使用流式输出streamBoolean可选

    即时输出结果,将结果输出到文本窗口,详见文档。此时将无法获得完整响应和token用量等信息。

    填写 输入或变量默认 false
  • 流式输出窗口标识streamToText可选

    一个预先使用非等待模式显示的文本窗口的标识,流式输出时将结果显示在该窗口中。

    填写 固定输入
  • 停止符stopstopText可选

    遇到指定的内容时自动停止生成。可使用\r,\n,\t等表示特殊字符。输入多行时,表示多个停止符。

    填写 固定输入
  • 强制使用代理forceProxyBoolean可选

    即使系统设置中未启用代理,本步骤仍然使用代理访问。

    填写 固定输入默认 false
  • 响应格式respFormatText可选

    留空,或使用"json_object"表示json格式响应,或json格式的完整的response_format内容。

    填写 输入或变量条件 仅:chat
    文本
    JSON对象json_object
  • 附加参数extraPropsDict可选

    用于添加额外的请求参数。请参考文档

    填写 固定输入条件 仅:chat
  • 失败后停止stopIfFailBoolean可选

    失败后是否停止动作

    填写 固定输入默认 true

输出参数

  • 是否成功isSuccessBoolean

    操作是否成功

  • 生成结果resultText

    生成的结果文本

  • 推理内容reasoningContentText

    推理模型的reasoning_content

  • 原始响应内容rawResponseText

    接口返回的原始响应内容

  • 提示Token数promptTokensInteger

    Prompt耗费的token数量

  • 响应Token数completionTokensInteger

    响应耗费的token数量

  • 总Token数totalTokensInteger

    总耗费的token数量

  • 结束原因finishReasonText
  • 历史消息historyMessagesObject

    消息类型列表对象

    条件 仅:chat

概述

动作里多半是一次性任务,不是连续聊天。常见写法:

  • 系统提示词 说明角色和要求。
  • 提示词 用插值拼出完整指令和待处理内容。

下面是中英互译:系统提示说明「有中文就译成英文,否则译成中文,只返回译文」;提示词后面再接 {text}(来自获取选中文本或用户输入)。

需要自备网络和服务商账号。数据会发到服务商(可能在境外),不要发送敏感、隐私或依法不得出境的信息,也不要用于违法用途。模型和端点的对应关系、token 上限以官方文档为准。

AI 调用

调用第三方AI服务
接口端点
模型
gpt-3.5-turbo
适用于可能适用于不同的端点,请参考官方文档使用。
API网址
 
可选,使用自定义的API服务器时使用。请参考模块文档了解如何设置。
APIKey
apikey
Orgnization
 
可选
系统提示词
你是一位诗人。
告知AI所需要扮演的角色和要求。如"你是一个专业的翻译助手"。
会话ID
 
可选。每次会话请生成新的GUID格式会话ID,设置后将自动保存会话历史。
历史消息
 
可选。存放历史消息的json数组,格式请参考文档说明。设定会话ID后,也可直接写发送的历史会话条数。
提示词
$$请根据下面的提示词写一首诗歌: {text}
要为其生成补全的完整提示内容。
最大响应Token数
0
最大响应输出token数(max_completion_tokens)
温度
0.6
用于控制输出的随机性,请根据模型文档设置温度参数。
top_p
1
n
1
对每个问题生成几个结果,将会耗费更多token。
超时秒数
30
最长等待秒数
流式输出窗口标识
INPUT_TEXT
一个预先使用非等待模式显示的文本窗口的标识,流式输出时将结果显示在该窗口中。
停止符stop
 
遇到指定的内容时自动停止生成。可使用\r,\n,\t等表示特殊字符。输入多行时,表示多个停止符。
响应格式
留空,或使用"json_object"表示json格式响应,或json格式的完整的response_format内容。
附加参数
 
用于添加额外的请求参数。请参考文档
是否成功
-- 选择变量 --
操作是否成功
生成结果
result
生成的结果文本
推理内容
-- 选择变量 --
推理模型的reasoning_content
原始响应内容
-- 选择变量 --
接口返回的原始响应内容
提示Token数
-- 选择变量 --
Prompt耗费的token数量
响应Token数
-- 选择变量 --
响应耗费的token数量
总Token数
-- 选择变量 --
总耗费的token数量
结束原因
-- 选择变量 --
历史消息
-- 选择变量 --
消息类型列表对象

参数说明

接口端点:Chat 或 Completions。

模型:模型 ID。是否适用于当前端点,看官方文档。

系统提示词:仅 Chat。角色和要求,例如「你是一个专业的翻译助手」。

提示词:仅 Chat / Completions。完整用户提示。1.42.21+ 支持纯文本,或兼容 gpt-4-vision 的 JSON 数组。不要填完整请求体。

AI 调用

调用第三方AI服务
提示词
[ { "type": "image_url", "image_url": { "url": "https://cdn-dynmedia-1.microsoft.com/is/image/microsoftcorp/Studio-2-platinum_sprite_thumbnaill?sc=1" } }, { "type": "text", "text": "图像描述了什么?" } ]
要为其生成补全的完整提示内容。

最大响应Token数:大约 1 个汉字或 2/3 个英文单词。建议 0,太短会被截断。提示 token + 本项不能超过模型上限。

温度:0~1。越小越稳,越大越发散。默认 0.2

APIKey:服务商密钥,注意保密。

Orgnization:可选,APIKey 对应的组织 ID。

top_p:见官方文档。仅 Chat / Completions。

n:生成几条结果,会加倍耗 token。模块只输出一条,其余要从原始响应里解析。

使用流式输出:边收边写到文本窗口。此时拿不到原始响应和 token 用量。

流式输出窗口标识:事先用非等待模式打开的文本窗口标识。填 INPUT_TEXT 则模拟输入到当前窗口(一切走焦点就停)。

停止符stop:遇到这些内容就停。官方说明。留空时用推荐默认 <|endoftext|>。接第三方接口时务必设置(或用 1.38.35+),建议 <|endoftext|>。可用 \r \n \t;多行表示多个停止符。

API网址:自定义或中转。

  • Azure:https://YOUR_RESOURCE_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/{1}?api-version=2023-05-15{1} 不要改,是接口名占位符。
  • 其它中转:https://api网址/{1}
  • 1.44.32+ 也可直接写以 chat/completions 结尾的完整网址。其它结尾可在前面加 ! 强制使用,如 !https://myserver/api/chat
  • 硅基流动:https://api.siliconflow.cn/v1/{1}
  • Ollama 本机:http://127.0.0.1:11434/v1/{1}

超时秒数:默认 120

响应格式:仅 Chat。留空为文本,或 json_object。1.43.55+ 也可填完整 response_format JSON(如 json_schema)。输出 JSON 时提示词要配合,并避免超 token 被截断。

{
"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
}
}

附加参数:仅 Chat。给第三方接口加字段。可传词典、JSON 或匿名对象:$= new { 参数名 = "参数值" }

强制使用代理:即使软件设置未开代理,本步骤也走代理。

会话ID / 历史消息:见下文。仅 Chat。

失败后停止:失败是否中止动作。默认开启。

输出

  • 是否成功
  • 生成结果
  • 推理内容:推理模型的 reasoning_content。旧稿未单独列出。
  • 原始响应内容
  • 提示Token数 / 响应Token数 / 总Token数
  • 结束原因
  • 历史消息:仅 Chat。消息对象列表;赋给文本变量时会变成 JSON。

流式输出时,原始响应和 token 相关输出不可用。

流式响应

流式目前无法检测错误。两种用法:

写到文本窗口

文本窗口
翻译结果:
The quick brown fox jumps over the lazy dog.

先开一个非等待的文本窗口,设好标识(建议 =,等于动作 ID,避免多个动作抢同一个窗):

文本窗口

在独立的窗口中显示文本。
操作类型
是否等待窗口关闭后继续
文本内容
翻译结果:
要显示的文本内容
文本窗口标识
=
可选。自动更新或关闭之前打开的具有此标识的文本窗口。使用'='表示当前动作id。

再在 AI 调用里打开流式,并填同一个窗口标识:

AI 调用

调用第三方AI服务
流式输出窗口标识
=
一个预先使用非等待模式显示的文本窗口的标识,流式输出时将结果显示在该窗口中。
文本窗口显示窗口,不等待关闭(立即开始执行后续的步骤) 翻译结果:
RAI 调用

新内容会追加到窗口。1.43.61+ 若窗口开了 Markdown 高亮,<think> 推理过程会显示为灰色。

模拟输入到当前窗口

流式输出窗口标识INPUT_TEXT。一切走焦点就停止输出。

历史会话

1.37.17+ 支持自动带上历史消息。

AI 调用

调用第三方AI服务
会话ID
 
可选。每次会话请生成新的GUID格式会话ID,设置后将自动保存会话历史。
历史消息
 
可选。存放历史消息的json数组,格式请参考文档说明。设定会话ID后,也可直接写发送的历史会话条数。
历史消息
-- 选择变量 --
消息类型列表对象

1)自己维护历史:把 JSON 数组传给 历史消息,不要填会话 ID,也不会回写历史。

2)交给 Quicker:数据在 Quicker数据文件夹\AiLogs

  • 会话ID:每次会话前用 生成Guid 生成,必须是 GUID 格式。
  • 历史消息:回传条数。总 token 有上限,太长要丢掉更早的消息。

建议用会话 ID 当文本窗口标识,避免同一动作连跑多次抢窗。

AI对话测试
注释1)这里文本窗口使用SessionId作为标识,每次会话使用一个单独的窗口。(避免同一个动作多运行造成重复冲突) 2)用户输入窗口应该置顶,避免被文本窗口盖住。
如果/否则判断条件:$={SecretKey}.IsNullOrWhiteSpace()
多字段表单编辑动作变量的值
否则
生成Guid输出到:{sessionId}
重复重复-1次,循环间隔: 1ms,中止条件:
用户输入多行文本
文本窗口获取窗口信息
如果/否则判断条件:{isWindowExists}
文本窗口显示和激活窗口
文本窗口追加内容 $$ 我:{userPromot} AI:
否则
文本窗口显示窗口,不等待关闭(立即开始执行后续的步骤) $$我:{userPromot} AI:
RAI 调用

示例动作

限制与排障

  • 密钥、组织 ID 不要写进分享动作。
  • 第三方中转必须带 {1} 或按 1.44.32+ 规则写完整网址。
  • 流式看不到错误和 token;调试先关掉流式。
  • 会话 ID 必须是 GUID,否则自动存历史会失败。

相关链接

更新历史

  • 20230714 修复 Azure 接口地址。
  • 20240327 增加响应格式、附加参数;提示词支持 gpt-4-vision。
  • 20241219 增加自定义响应格式说明。
  • 20250307 1.43.61 输出 reasoning_content;Markdown 窗口灰色显示 <think>

更新于