promptflow.core 模块#
- class promptflow.core.AsyncFlow(*, data: dict, code: Path, path: Path, **kwargs)#
基础类:
FlowBase
异步流程基于Flow,用于在异步模式下调用流程。
示例:
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。
- Parameters:
args – 不支持位置参数。
kwargs – 使用关键字参数的流程输入。
- Returns:
- async invoke(inputs: dict, *, connections: dict = None, **kwargs) LineResult #
调用一个流程并获取一个LineResult对象。
- class promptflow.core.AsyncPrompty(path: Union[str, PathLike], model: Optional[dict] = None, **kwargs)#
基础类:
Prompty
Async 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。
- Parameters:
args – 不支持位置参数。
kwargs – 使用关键字参数的流程输入。
- Returns:
- 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连接创建模型配置。
- Parameters:
connection (promptflow.connections.AzureOpenAIConnection) – AzureOpenAI 连接对象。
azure_deployment (str) – Azure 部署名称。
- class promptflow.core.Flow(*, data: dict, code: Path, path: Path, **kwargs)#
基础类:
FlowBase
在PromptFlow的上下文中,Flow是定义任务的一系列步骤。 流程中的每一步可以是一个发送给语言模型的提示,或者仅仅是一个函数任务, 并且一个步骤的输出可以用作下一个步骤的输入。 Flow可以用来构建复杂的语言模型应用程序。
示例:
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。
- Parameters:
args – 不支持位置参数。
kwargs – 使用关键字参数的流程输入。
- Returns:
- 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连接创建模型配置。
- Parameters:
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文件,包含模型配置、输入等元字段。
提示示例: .. 代码块:
--- 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:如果由于意外的执行器错误导致流程执行失败。
- Parameters:
args – 不支持位置参数。
kwargs – 使用关键字参数的流程输入。
- Returns:
- estimate_token_count(*args, **kwargs)#
估计令牌数量。 当提示令牌加响应令牌超过模型支持的最大令牌数时,LLM将拒绝请求。它用于估计本轮聊天中的总令牌数。
- Parameters:
args – 不支持位置参数。
kwargs – 使用关键字参数进行提示输入。
- Returns:
估计总令牌数
- Return type:
整数
- classmethod load(source: Union[str, PathLike], **kwargs) Prompty #
直接从prompty文件加载非dag流程。
- Parameters:
source (Union[PathLike, str]) – 本地提示文件。必须是一个本地文件的路径。 如果源是一个路径,它将被打开并读取。 如果文件不存在,将引发异常。
- Returns:
一个Prompty对象
- Return type:
- render(*args, **kwargs)#
渲染提示内容。
- Parameters:
args – 不支持位置参数。
kwargs – 使用关键字参数进行提示输入。
- Returns:
提示内容
- Return type:
字符串
- 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运行的指标。
- Parameters:
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 #
用于工具函数的装饰器。被装饰的函数将被注册为一个工具,并可以在流程中使用。
- Parameters:
name (str) – 工具名称。
描述 (str) – 工具的描述。
type (str) – 工具类型。
input_settings (Dict[str, promptflow.entities.InputSetting]) – 输入设置的字典。
- Returns:
装饰后的函数。
- Return type:
可调用的