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)#

基类:ModelConfiguration

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 连接创建模型配置。

参数:
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)#

基类:ModelConfiguration

api_key: str = None#
base_url: str = None#
connection: str = None#
classmethod from_connection(connection: OpenAIConnection, model: str)#

从 OpenAI 连接创建模型配置。

参数:
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 对象

返回类型:

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]) – 输入设置字典。

返回:

被装饰的函数。

返回类型:

可调用