在PromptFlow中创建动态列表工具输入的完整指南

在PromptFlow中创建动态列表工具输入的完整指南

promptflow Build high-quality LLM apps - from prototyping, testing to production deployment and monitoring. promptflow 项目地址: https://gitcode.com/gh_mirrors/pr/promptflow

动态列表工具输入概述

在PromptFlow项目中,动态列表工具输入是一种强大的功能,它允许工具开发者创建能够实时获取选项的输入字段。与传统的静态选项不同,动态列表通过调用后端函数来获取最新的选项数据,极大地提升了工具的灵活性和实用性。

动态列表的核心优势在于:

  • 实时数据获取:选项内容可以来自API、数据库或其他动态数据源
  • 高度可定制:可以控制每个选项的显示方式、提示信息和交互行为
  • 上下文感知:选项可以根据其他输入参数的变化而动态调整

准备工作

在开始创建动态列表工具输入前,需要确保满足以下条件:

  1. 开发环境准备:

    • 安装最新版本的PromptFlow开发工具
    • Python环境配置完成
  2. 依赖包安装:

    pip install promptflow>=1.0.0
    

创建动态列表函数

函数结构要求

动态列表函数需要遵循特定的结构规范:

from typing import List, Dict, Union

def dynamic_list_function(param1: str, param2: int = 10, **kwargs) -> List[Dict[str, Union[str, int, float, list, Dict]]]:
    """
    动态列表生成函数
    
    参数:
        param1: 字符串参数示例
        param2: 整型参数示例,默认值为10
        kwargs: 其他可选参数
        
    返回:
        返回选项列表,每个选项是一个字典,包含以下键:
        - value: 实际传递给工具的值(必需)
        - display_value: 界面显示的值(可选)
        - hyperlink: 点击跳转的链接(可选)
        - description: 悬停提示信息(可选)
    """
    # 实现数据获取逻辑
    options = []
    # ... 数据处理逻辑 ...
    return options

实际示例解析

以下是一个完整的动态列表函数示例,它生成随机水果名称的列表:

import random

def generate_fruit_list(prefix: str = "", size: int = 10, **kwargs):
    """生成水果名称动态列表
    
    参数:
        prefix: 选项前缀
        size: 生成选项数量
        kwargs: 其他参数
        
    返回:
        水果选项列表,每个选项包含显示值和跳转链接
    """
    fruits = ["苹果", "香蕉", "橙子", "葡萄", "西瓜", 
             "芒果", "草莓", "蓝莓", "菠萝", "桃子"]
    
    result = []
    for i in range(size):
        fruit = f"{random.choice(fruits)}{i}"
        item = {
            "value": fruit,
            "display_value": f"{prefix}{fruit}",
            "hyperlink": f'https://search.example.com?q={fruit}',
            "description": f"这是第{i+1}个水果选项"
        }
        result.append(item)
    
    return result

配置工具YAML文件

在工具的YAML配置文件中,需要为动态列表输入添加特定配置:

tool_namespace.tool_module.tool_function:
  function: tool_function
  inputs:
    dynamic_input:
      type:
      - list
      dynamic_list:
        func_path: module.path.to.list_function  # 动态列表函数路径
        func_kwargs: 
        - name: param1  # 参数1
          type: string
          optional: true
          reference: ${inputs.other_input}  # 可引用其他输入值
        - name: size  # 参数2
          type: int
          optional: true
          default: 5
      allow_manual_entry: true  # 允许手动输入
      is_multi_select: false  # 是否允许多选

关键配置项说明:

  • func_path: 指定动态列表函数的完整导入路径
  • func_kwargs: 定义传递给函数的参数,支持引用其他输入值
  • allow_manual_entry: 控制用户是否可以手动输入值
  • is_multi_select: 控制是否允许多选模式

集成Azure资源动态列表

当需要动态列出Azure资源时,需要特别注意认证和配置:

  1. 函数实现要点:
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

def list_azure_resources(
    subscription_id: str = None,
    resource_group_name: str = None,
    workspace_name: str = None,
    **kwargs
):
    """列出Azure ML资源"""
    if not all([subscription_id, resource_group_name, workspace_name]):
        return []
    
    credential = DefaultAzureCredential()
    ml_client = MLClient(
        credential=credential,
        subscription_id=subscription_id,
        resource_group_name=resource_group_name,
        workspace_name=workspace_name
    )
    
    # 获取资源逻辑...
  1. 用户端配置要求:
# 安装Azure依赖
pip install azure-ai-ml

# 配置Azure默认工作区
az login
az account set --subscription <订阅ID>
az configure --defaults group=<资源组> workspace=<工作区>

常见问题排查

动态列表不显示选项

如果动态列表没有显示任何选项,可以按照以下步骤排查:

  1. 检查错误信息:界面通常会显示具体的错误原因
  2. 验证依赖:
    • 确保所有必要的Python包已安装
    • 对于Azure资源,确认已登录并设置默认工作区
  3. 测试函数:单独调用动态列表函数验证其返回值
  4. 检查YAML配置:确认函数路径和参数传递正确

性能优化建议

当动态列表获取较慢时,可以考虑:

  1. 实现缓存机制,避免重复请求
  2. 添加分页参数,减少单次返回数据量
  3. 对于大型数据集,实现搜索过滤功能

最佳实践

  1. 设计原则:

    • 保持函数单一职责,只负责获取选项数据
    • 合理设置默认值和可选参数
    • 添加详细的文档说明
  2. 用户体验:

    • 为选项提供有意义的显示值和描述
    • 考虑添加超链接提供更多上下文信息
    • 处理空状态和错误情况
  3. 安全性:

    • 敏感参数应设置为optional并通过引用传递
    • 对用户输入进行适当验证和清理

通过遵循本指南,您可以在PromptFlow中创建出功能强大且用户友好的动态列表工具输入,极大地提升工具的实用性和灵活性。

promptflow Build high-quality LLM apps - from prototyping, testing to production deployment and monitoring. promptflow 项目地址: https://gitcode.com/gh_mirrors/pr/promptflow

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咎鲲才

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值