Microsoft PromptFlow项目:如何在流程中引用外部文件和文件夹

Microsoft PromptFlow项目:如何在流程中引用外部文件和文件夹

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

引言

在开发基于Microsoft PromptFlow的流程时,我们经常会遇到需要复用已有代码资源的情况。虽然将这些资源打包成Python包是一种解决方案,但有时创建包可能过于繁琐或不切实际。本文将详细介绍PromptFlow提供的"additional_includes"功能,这是一种高效引用外部文件和文件夹的机制。

为什么需要引用外部资源

在实际项目开发中,我们经常会遇到以下场景:

  1. 多个流程需要共享相同的工具脚本
  2. 某些功能模块已经开发完成,但尚未打包
  3. 需要临时引用测试环境中的特定文件版本

这些情况下,"additional_includes"功能就能派上用场,它允许我们在不修改原有文件结构的情况下,灵活地将外部资源整合到当前流程中。

基本使用方法

要在流程中引用外部文件或文件夹,只需在flow.dag.yaml配置文件中添加additional_includes字段。这个字段的值是一个列表,包含相对于当前流程文件夹的外部文件或文件夹路径。

additional_includes:
- ../shared_scripts/text_processing.py
- ../utils/data_preparation/
- ../../common_templates/classification.jinja2

工具节点配置

在定义工具节点时,可以直接使用文件名而不需要重复指定相对路径:

nodes:
- name: text_processing
  type: python
  source:
    type: code
    path: text_processing.py  # 实际路径已在additional_includes中指定
  inputs:
    input_text: ${inputs.text}

优先级规则

理解文件引用的优先级规则对于正确使用此功能至关重要:

  1. 同名文件冲突:如果在additional_includes中列出了多个同名文件,系统将使用最后出现的那个
  2. 与流程文件夹内文件冲突:如果外部文件和流程文件夹内文件同名,系统会优先使用additional_includes中指定的文件

示例场景

假设有以下配置:

additional_includes:
- ../version1/process_data.py
- ../version2/process_data.py

节点配置:

nodes:
- name: data_processor
  type: python
  source:
    type: code
    path: process_data.py

在这种情况下,系统将使用../version2/process_data.py作为工具节点的入口文件。

最佳实践

  1. 路径管理

    • 使用相对路径时,确保路径相对于流程文件夹
    • 考虑使用统一的共享资源目录结构
  2. 版本控制

    • 对于关键组件,建议在文件名中包含版本信息
    • 例如:data_processor_v1.2.py
  3. 调试技巧

    • 在复杂引用情况下,可以先打印文件路径确认实际加载的是哪个文件
    • 使用日志记录文件加载过程

高级用法

文件夹引用

除了单个文件,还可以引用整个文件夹:

additional_includes:
- ../common_utils/

引用文件夹时,该文件夹下的所有内容都会被视为流程的一部分。

模板文件引用

对于Jinja2模板文件,引用方式与Python文件相同:

additional_includes:
- ../templates/classification_prompt.jinja2

然后在节点中直接使用文件名引用:

nodes:
- name: classify
  type: llm
  source:
    type: code
    path: classification_prompt.jinja2

注意事项

  1. 路径正确性:确保所有路径在流程执行环境中都是有效的
  2. 文件权限:引用的外部文件需要有适当的读取权限
  3. 环境一致性:在不同环境部署时,确保外部资源的路径结构一致
  4. 性能考虑:大量外部引用可能会影响流程加载速度

总结

Microsoft PromptFlow的"additional_includes"功能为流程开发提供了极大的灵活性,使得代码复用和资源管理变得更加简单高效。通过合理使用这一功能,开发者可以:

  • 避免不必要的代码复制
  • 保持代码库的整洁性
  • 实现跨流程的组件共享
  • 灵活管理不同版本的资源文件

掌握这一功能将显著提升您在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
发出的红包

打赏作者

皮奕清Primavera

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

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

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

打赏作者

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

抵扣说明:

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

余额充值