promptflow.core 模块#
- class promptflow.core.AsyncFlow(*, data: dict, code: Path, path: Path, **kwargs)#
基类:
FlowBase
异步流基于流,用于以异步模式调用流。
示例
from promptflow.core import class AsyncFlow flow = AsyncFlow.load(source="path/to/flow.yaml") result = await flow(input_a=1, input_b=2)
- async __call__(*args, **kwargs) Mapping[str, Any] #
以异步方式将流作为函数调用,输入应以关键字参数形式提供。返回流的输出。如果流无效或输入无效,函数调用会引发 UserErrorException。如果流执行因意外的执行器错误而失败,则会引发 SystemErrorException。
- 参数:
args – 不支持位置参数。
kwargs – 带有关键字参数的流输入。
- 返回:
- async invoke(inputs: dict, *, connections: dict = None, **kwargs) LineResult #
调用流并获取 LineResult 对象。
- class promptflow.core.AsyncPrompty(path: Union[str, PathLike], model: Optional[dict] = None, **kwargs)#
基类:
Prompty
异步 Prompty 基于 Prompty,用于以异步模式调用 Prompty。
简单示例
import asyncio from promptflow.core import AsyncPrompty prompty = AsyncPrompty.load(source="path/prompty.prompty") result = await prompty(input_a=1, input_b=2)
- async __call__(*args, **kwargs) Mapping[str, Any] #
以异步方式将 prompty 作为函数调用,输入应以关键字参数形式提供。返回 prompty 的输出。如果流无效或输入无效,函数调用会引发 UserErrorException。如果流执行因意外的执行器错误而失败,则会引发 SystemErrorException。
- 参数:
args – 不支持位置参数。
kwargs – 带有关键字参数的流输入。
- 返回:
- class promptflow.core.AzureOpenAIModelConfiguration(azure_deployment: str, azure_endpoint: str = None, api_version: str = None, api_key: str = None, connection: str = None)#
-
- api_key: str = None#
- api_version: str = None#
- azure_deployment: str#
- azure_endpoint: str = None#
- connection: str = None#
- classmethod from_connection(connection: AzureOpenAIConnection, azure_deployment: str)#
从 Azure OpenAI 连接创建模型配置。
- 参数:
connection (promptflow.connections.AzureOpenAIConnection) – AzureOpenAI 连接对象。
azure_deployment (str) – Azure 部署名称。
- class promptflow.core.Flow(*, data: dict, code: Path, path: Path, **kwargs)#
基类:
FlowBase
在 PromptFlow 的上下文中,流是定义任务的一系列步骤。流中的每个步骤都可以是发送到语言模型的提示,或仅仅是一个函数任务,一个步骤的输出可以作为下一个步骤的输入。流可用于使用语言模型构建复杂的应用程序。
示例
from promptflow.core import Flow flow = Flow.load(source="path/to/flow.yaml") result = flow(input_a=1, input_b=2)
- __call__(*args, **kwargs) Mapping[str, Any] #
将流作为函数调用,输入应以关键字参数形式提供。返回流的输出。如果流无效或输入无效,函数调用会引发 UserErrorException。如果流执行因意外的执行器错误而失败,则会引发 SystemErrorException。
- 参数:
args – 不支持位置参数。
kwargs – 带有关键字参数的流输入。
- 返回:
- invoke(inputs: dict, connections: dict = None, **kwargs) LineResult #
调用流并获取 LineResult 对象。
- class promptflow.core.ModelConfiguration#
基类:
object
- abstract classmethod from_connection(connection, **kwargs)#
从连接创建模型配置。
- class promptflow.core.OpenAIModelConfiguration(model: str, base_url: str = None, api_key: str = None, organization: str = None, connection: str = None)#
-
- api_key: str = None#
- base_url: str = None#
- connection: str = None#
- classmethod from_connection(connection: OpenAIConnection, model: str)#
从 OpenAI 连接创建模型配置。
- 参数:
connection (promptflow.connections.OpenAIConnection) – OpenAI 连接对象。
model (str) – 模型名称。
- model: str#
- organization: str = None#
- class promptflow.core.Prompty(path: Union[str, PathLike], model: Optional[dict] = None, **kwargs)#
基类:
FlowBase
Prompty 是一个具有预定义元数据(如输入)的提示,可以直接像流一样执行。Prompty 以带有修改后的前置信息的模板 Markdown 文件形式表示。前置信息是一个 YAML 文件,包含模型配置、输入等元字段。
Prompty 示例:.. 代码块
--- name: Hello Prompty description: A basic prompt model: api: chat configuration: type: azure_openai azure_deployment: gpt-35-turbo api_key="${env:AZURE_OPENAI_API_KEY}", api_version=${env:AZURE_OPENAI_API_VERSION}", azure_endpoint="${env:AZURE_OPENAI_ENDPOINT}", parameters: max_tokens: 128 temperature: 0.2 inputs: text: type: string --- system: Write a simple {{text}} program that displays the greeting message.
Prompty 作为函数示例
from promptflow.core import Prompty prompty = Prompty.load(source="path/to/prompty.prompty") result = prompty(input_a=1, input_b=2) # Override model config with dict model_config = { "api": "chat", "configuration": { "type": "azure_openai", "azure_deployment": "gpt-35-turbo", "api_key": "${env:AZURE_OPENAI_API_KEY}", "api_version": "${env:AZURE_OPENAI_API_VERSION}", "azure_endpoint": "${env:AZURE_OPENAI_ENDPOINT}", }, "parameters": { "max_token": 512 } } prompty = Prompty.load(source="path/to/prompty.prompty", model=model_config) result = prompty(input_a=1, input_b=2) # Override model config with configuration from promptflow.core import AzureOpenAIModelConfiguration model_config = { "api": "chat", "configuration": AzureOpenAIModelConfiguration( azure_deployment="gpt-35-turbo", api_key="${env:AZURE_OPENAI_API_KEY}", api_version="${env:AZURE_OPENAI_API_VERSION}", azure_endpoint="${env:AZURE_OPENAI_ENDPOINT}", ), "parameters": { "max_token": 512 } } prompty = Prompty.load(source="path/to/prompty.prompty", model=model_config) result = prompty(input_a=1, input_b=2) # Override model config with created connection from promptflow.core._model_configuration import AzureOpenAIModelConfiguration model_config = { "api": "chat", "configuration": AzureOpenAIModelConfiguration( connection="azure_open_ai_connection", azure_deployment="gpt-35-turbo", ), "parameters": { "max_token": 512 } } prompty = Prompty.load(source="path/to/prompty.prompty", model=model_config) result = prompty(input_a=1, input_b=2)
- __call__(*args, **kwargs)#
将流作为函数调用,输入应以关键字参数形式提供。返回 prompty 的输出。
prompty 执行的重试机制在检测到可重试错误时启动,包括 LLM 响应错误,例如 InternalServerError (>=500)、RateLimitError (429) 和 UnprocessableEntityError (422)。它被设计为最多重试 10 次。每次重试间隔呈指数增长,等待时间不超过 60 秒。所有重试的总等待时间约为 400 秒。
如果流无效或输入无效,函数调用会引发 UserErrorException。如果流执行因意外的执行器错误而失败,则会引发 SystemErrorException。
- 参数:
args – 不支持位置参数。
kwargs – 带有关键字参数的流输入。
- 返回:
- estimate_token_count(*args, **kwargs)#
估算令牌计数。当提示令牌 + 响应令牌大于模型支持的最大令牌数时,LLM 将拒绝请求。它用于估算本轮聊天的总令牌数。
- 参数:
args – 不支持位置参数。
kwargs – 带有关键字参数的 prompty 输入。
- 返回:
估算总令牌计数
- 返回类型:
int
- classmethod load(source: Union[str, PathLike], **kwargs) Prompty #
直接从 prompty 文件加载非 DAG 流。
- 参数:
source (Union[PathLike, str]) – 本地提示文件。必须是本地文件的路径。如果源是路径,它将被打开并读取。如果文件不存在,则会引发异常。
- 返回:
一个 Prompty 对象
- 返回类型:
- render(*args, **kwargs)#
渲染提示内容。
- 参数:
args – 不支持位置参数。
kwargs – 带有关键字参数的 prompty 输入。
- 返回:
提示内容
- 返回类型:
str
- class promptflow.core.ToolProvider(*args, **kwargs)#
基类:
ABC
工具类的基类。
- classmethod get_initialize_inputs()#
- classmethod get_required_initialize_inputs()#
- promptflow.core.log_metric(key, value, variant_id=None)#
记录当前 promptflow 运行的指标。
- 参数:
key (str) – 指标名称。
value (float) – 指标值。
variant_id (str) – 指标的变体 ID。
- promptflow.core.tool(func=None, *, name: Optional[str] = None, description: Optional[str] = None, type: Optional[str] = None, input_settings=None, streaming_option_parameter: Optional[str] = None, **kwargs) Callable #
工具函数的装饰器。被装饰的函数将注册为工具,并可在流中使用。
- 参数:
name (str) – 工具名称。
description (str) – 工具描述。
type (str) – 工具类型。
input_settings (Dict[str, promptflow.entities.InputSetting]) – 输入设置字典。
- 返回:
被装饰的函数。
- 返回类型:
可调用