跳转至

脚本开发 / 连接器对象 DFF.CONN / LLM(兼容 OpenAI)

LLM 连接器操作对象用于通过连接器中配置的 OpenAI 兼容 Chat Completions API 发起文本对话。

本连接器需要目标服务兼容 OpenAI Chat Completions API

不同服务支持的模型和请求参数可能不同,具体以目标服务的文档为准。

1. 连接器配置

创建 LLM 连接器时,需要配置以下字段:

字段 必须 / 默认值 说明
Base URL 必须 / https://api.openai.com/v1 OpenAI 兼容 API 的基础地址
API Key 必须 用于访问目标服务的 API Key
Model 必须 默认使用的模型 ID,必须是目标服务支持的 Chat Completions 模型 ID

填写 Base URLAPI Key 后,展开 Model 选择框时,界面会尝试通过目标服务的 /models 接口加载模型列表。如果未能加载,仍可以手工填写目标服务支持的模型 ID。

消息会发送到目标服务并可能产生费用

请确认连接器指向的目标服务,不要在消息中发送 API Key、密码或无关的敏感数据。

2. 获取连接器操作对象

DFF.CONN(...) 参数如下:

参数 类型 必须 / 默认值 说明
connector_id str 必须 连接器 ID
model str None 覆盖连接器配置中的默认模型
timeout int/float 60 请求超时时间,单位为秒
示例
1
2
3
4
llm = DFF.CONN('llm_connector_id')

# 为当前操作对象覆盖默认模型和请求超时时间
another_llm = DFF.CONN('llm_connector_id', model='another-model', timeout=30)

3. .chat(...)

调用 OpenAI 兼容 Chat Completions API,方法签名如下:

Python
1
llm.chat(messages, model=None, **kwargs)

参数如下:

参数 类型 必须 / 默认值 说明
messages str/list[dict] 必须 对话消息。传入字符串时会自动转换为一条 "user" 消息;传入消息列表时会原样发送
model str None 仅为本次调用覆盖模型
**kwargs 任意 其他关键字参数会透传给 OpenAI Python SDK 的 client.chat.completions.create(...),是否可用取决于目标服务

本方法将 Chat Completions 的完整响应转换为 dict 后返回。文本回复通常位于 choices[0].message.content

有关 Chat Completions 请求参数和响应结构,请参考 OpenAI API / Create chat completion

3.1 单轮对话

messages 可以直接传入字符串:

示例
1
2
3
4
5
llm = DFF.CONN('llm_connector_id')

response = llm.chat('什么是 DataFlux Func?')
reply    = response['choices'][0]['message']['content']
print(reply)

字符串会自动转换为以下消息列表后发送:

Python
1
2
3
4
messages = [{
    'role'   : 'user',
    'content': '什么是 DataFlux Func?',
}]

3.2 多轮对话

本连接器不会保存对话历史。需要多轮对话时,应由脚本保存并在每次调用时传入完整消息列表:

示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
llm = DFF.CONN('llm_connector_id')

messages = [
    {
        'role'   : 'system',
        'content': '请简短回答。',
    },
    {
        'role'   : 'user',
        'content': '什么是 DataFlux Func?',
    },
]

response = llm.chat(messages, temperature=0)
reply    = response['choices'][0]['message']['content']

messages.append({
    'role'   : 'assistant',
    'content': reply,
})
messages.append({
    'role'   : 'user',
    'content': '它适合处理哪些任务?',
})

response = llm.chat(messages, temperature=0)

3.3 临时覆盖模型

模型按以下优先级选择:

  1. .chat(...)model 参数;
  2. DFF.CONN(...)model 参数;
  3. 连接器配置中的 Model
示例
1
2
3
4
llm = DFF.CONN('llm_connector_id', model='default-model-for-this-object')

# 本次调用使用 another-model
response = llm.chat('你好!', model='another-model')

4. 能力边界和安全注意事项

  • 本连接器调用 Chat Completions API,不调用 Responses API。
  • 本连接器只支持非流式返回,不要传入 stream=True
  • 本连接器不会保存对话历史,也不会自动管理上下文长度。应根据模型上下文窗口、DataFlux Func 任务超时和调用方要求限制消息历史及输出大小。
  • 其他参数虽然可以通过 **kwargs 透传,但本连接器不负责管理工具调用、文件、图片、音频等内容,也不自动执行模型返回的工具参数。
  • 模型输出属于不可信数据。执行模型生成的代码、命令、SQL 或工具参数前,必须另行校验并确认授权。