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

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

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

基础:ModelConfiguration

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

从OpenAI连接创建模型配置。

Parameters:
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:

Prompty

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:

可调用的