在流中使用连接#

连接有助于安全地存储和管理与LLM和其他外部工具(例如Azure内容安全)交互所需的密钥或其他敏感凭据。在prompt flow中支持以下连接用法。

__init__中的模型配置#

就像基于类的流批处理运行中的示例一样,支持在ModelConfig中引用连接。有关ModelConfig的更多信息,请参阅此处。连接将被解析并扁平化连接的字段到ModelConfig。注意:目前模型配置仅支持OpenAI和AzureOpenAI连接。对于自定义连接,请使用__init__ 中的连接

__init__中的连接#

也支持通过名称直接在__init__中传递连接。

class MyFlow:
    def __init__(self, my_connection: AzureOpenAIConnection):
        pass

注意

  • 不支持连接类型的联合(Union[OpenAIConnection, AzureOpenAIConnection])。

使用连接进行批处理运行#

用户可以将连接名称传递给init中的连接字段。

在本地,连接名称将在执行时替换为本地连接对象。在云端,连接名称将在执行时替换为工作区的连接对象。

# local connection "my_connection"'s instance will be passed to `__init__`
pf.run(flow="./flow.flex.yaml", init={"connection": "my_connection"}, data="./data.jsonl")
# cloud connection "my_cloud_connection"'s instance will be passed to `__init__`
pfazure.run(flow="./flow.flex.yaml", init={"connection": "my_cloud_connection"}, data="./data.jsonl")

环境变量连接#

如果流YAML具有environment_variables,并且其值是一个连接引用,如下所示

environment_variables:
  AZURE_OPENAI_API_KEY: ${open_ai_connection.api_key}
  AZURE_OPENAI_ENDPOINT: ${open_ai_connection.api_base}

环境变量的值将在运行时解析为实际值。如果连接不存在(在本地或云端),将引发连接未找到错误。

注意:用户可以使用flow.flex.yaml中现有的环境变量键覆盖environment_variables

pf run create --flow . --data ./data.jsonl --environment-variables AZURE_OPENAI_API_KEY='${new_connection.api_key}' AZURE_OPENAI_ENDPOINT='my_endpoint'

不支持使用flow.flex.yaml中不存在的环境变量名称进行覆盖。这意味着如果用户在运行时添加了flow.flex.yaml中不存在的环境变量,其值将不会被解析。

例如,

pf run create --flow . --data ./data.jsonl --environment-variables NEW_API_KEY='${my_new_connection.api_key}'

NEW_API_KEY的值将不会解析为连接的API密钥。