当前位置: 首页 > news >正文

Autogen_core: test_code_executor.py

目录

    • 代码
    • 代码解释

代码

import textwrapimport pytest
from autogen_core.code_executor import (Alias,FunctionWithRequirements,FunctionWithRequirementsStr,ImportFromModule,
)
from autogen_core.code_executor._func_with_reqs import build_python_functions_file
from pandas import DataFrame, concatdef template_function() -> DataFrame:  # type: ignoredata1 = {"name": ["John", "Anna"],"location": ["New York", "Paris"],"age": [24, 13],}data2 = {"name": ["Peter", "Linda"],"location": ["Berlin", "London"],"age": [53, 33],}df1 = DataFrame.from_dict(data1)  # type: ignoredf2 = DataFrame.from_dict(data2)  # type: ignorereturn concat([df1, df2])  # type: ignorefunction = FunctionWithRequirements.from_callable(  # type: ignoretemplate_function,["pandas"],[ImportFromModule("pandas", ["DataFrame", "concat"])],)function
FunctionWithRequirements(func=<function template_function at 0x000002ACEFA96FC0>, python_packages=['pandas'], global_imports=[ImportFromModule(module='pandas', imports=('DataFrame', 'concat'))])
functions_module = build_python_functions_file([function])
functions_module 
'from pandas import DataFrame, concat\n\ndef template_function() -> DataFrame:  # type: ignore\n    data1 = {\n        "name": ["John", "Anna"],\n        "location": ["New York", "Paris"],\n        "age": [24, 13],\n    }\n    data2 = {\n        "name": ["Peter", "Linda"],\n        "location": ["Berlin", "London"],\n        "age": [53, 33],\n    }\n    df1 = DataFrame.from_dict(data1)  # type: ignore\n    df2 = DataFrame.from_dict(data2)  # type: ignore\n    return concat([df1, df2])  # type: ignore\n\n\n'
assert "from pandas import DataFrame, concat" in functions_module
function2: FunctionWithRequirementsStr = FunctionWithRequirements.from_str(textwrap.dedent("""def template_function2():return pd.Series([1, 2])"""),"pandas",[Alias("pandas", "pd")],)function2
FunctionWithRequirementsStr(func='\ndef template_function2():\n    return pd.Series([1, 2])\n', compiled_func=<function template_function2 at 0x000002ACA0655A80>, _func_name='template_function2', python_packages='pandas', global_imports=[Alias(name='pandas', alias='pd')])
functions_module2 = build_python_functions_file([function2])
functions_module2
'import pandas as pd\n\n\ndef template_function2():\n    return pd.Series([1, 2])\n\n\n'
assert "import pandas as pd" in functions_module2

代码解释

上面的代码主要展示了如何使用 autogen_core 库中的 FunctionWithRequirements 类来定义和管理具有依赖项的 Python 函数,并将这些函数及其依赖项打包成一个可执行的 Python 模块。

代码分为几个部分:

  1. 定义模板函数

    • 定义了一个名为 template_function 的函数,它创建两个字典 data1data2,然后将这些字典转换为 pandas DataFrame 对象,并将它们合并成一个 DataFrame 对象返回。
  2. 创建 FunctionWithRequirements 对象

    • 使用 FunctionWithRequirements.from_callable 方法,将 template_function 函数及其依赖项(这里是 pandas 库)封装成一个 FunctionWithRequirements 对象。这个对象包含了函数代码、所需的 Python 包和所需的导入项。
  3. 生成 Python 函数文件

    • 使用 build_python_functions_file 函数,将 FunctionWithRequirements 对象转换成一个包含函数代码和必要导入语句的字符串。这个字符串可以被保存为一个 Python 文件,并作为独立模块运行。
  4. 断言检查

    • 通过断言确保生成的 Python 模块包含正确的导入语句。
  5. 定义第二个模板函数

    • 定义了一个名为 template_function2 的函数,它返回一个 pandas Series 对象。这个函数使用 FunctionWithRequirements.from_str 方法从字符串定义,并使用 pandas 别名 pd
  6. 生成第二个 Python 函数文件

    • 类似于之前的步骤,将 template_function2 函数及其依赖项打包成一个 Python 模块。
  7. 断言检查

    • 通过断言确保生成的第二个 Python 模块包含正确的导入语句。

总的来说,这段代码演示了如何使用 autogen_core 库来管理和打包具有依赖项的 Python 函数,以便它们可以在不同的环境中重用和执行。这可以用于自动化代码生成、模块化代码复用、简化函数部署等场景。

参考链接:
https://github.com/microsoft/autogen/blob/main/python/packages/autogen-core/tests/test_code_executor.py

http://www.lryc.cn/news/529297.html

相关文章:

  • 从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架
  • Java实现.env文件读取敏感数据
  • Go反射指南
  • Fullcalendar @fullcalendar/react 样式错乱丢失问题和导致页面卡顿崩溃问题
  • 【电工基础】4.低压电器元件,漏电保护器,熔断器,中间继电器
  • 有限元分析学习——Anasys Workbanch第一阶段笔记梳理
  • C++中常用的十大排序方法之1——冒泡排序
  • vscode+WSL2(ubuntu22.04)+pytorch+conda+cuda+cudnn安装系列
  • 手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion(代码)
  • 【Block总结】OutlookAttention注意力,捕捉细节和局部特征|即插即用
  • 网络攻防实战指北专栏讲解大纲与网络安全法
  • 【已解决】windows7虚拟机安装VMtools频繁报错
  • 蓝桥杯模拟算法:多项式输出
  • 冲刺蓝桥杯之速通vector!!!!!
  • 知识管理平台在数字经济时代推动企业智慧决策与知识赋能的路径分析
  • IT服务管理平台(ITSM):构建高效运维体系的基石
  • [EAI-026] DeepSeek-VL2 技术报告解读
  • 深度学习:基于MindNLP的RAG应用开发
  • 【C语言】static关键字的三种用法
  • STM32 PWMI模式测频率占空比
  • 神经网络|(四)概率论基础知识-古典概型
  • ubuntu20.04.6下运行VLC-Qt例子simple-player
  • 低代码产品插件功能一览
  • Blazor-@bind
  • RK3568中使用QT opencv(显示基础图像)
  • [答疑]DDD伪创新哪有资格和仿制药比
  • C#,入门教程(05)——Visual Studio 2022源程序(源代码)自动排版的功能动画图示
  • DIY QMK量子键盘
  • C++ 堆栈分配的区别
  • 范冰冰担任第75届柏林电影节主竞赛单元评委 共鉴电影佳作