跳到主要内容 基于 Semantic Kernel 与 Pandora Box 快速构建 Code Agent | 极客日志
Python AI
基于 Semantic Kernel 与 Pandora Box 快速构建 Code Agent Code Agent 是迈向人工通用智能的关键技术,能够自动编写和优化代码。基于 Semantic Kernel 和 Pandora Box 快速构建 Code Agent 的方法。内容包括环境准备、核心代码实现、多轮对话案例演示以及安全最佳实践。通过整合 Azure OpenAI 服务和 Pandora Box 的沙箱执行能力,开发者可以创建一个能够理解自然语言需求并自主执行 Python 代码的智能体,从而提升软件开发效率和自动化水平。
Kubernet 发布于 2025/2/7 更新于 2026/4/20 1 浏览
基于 Semantic Kernel 与 Pandora Box 快速构建 Code Agent
1. Code Agent 概述 在人工智能领域,Code Agent(代码智能体)不仅是技术进步的一个标志,更是我们迈向人工通用智能(AGI)的关键一步。AGI 旨在创造能够执行任何智能任务的 AI,而 Code Agent 的能力——自动编写、优化和执行代码——是实现这一目标的基石之一。
通过自动处理复杂的编程任务,Code Agent 不仅提高了软件开发的效率,更重要的是,它使机器能够理解和执行与软件开发相关的高级认知任务。例如,当开发者描述功能需求时,如'创建一个可以自动整理和分类电子邮件的应用程序',Code Agent 不仅能生成代码,还能展示理解复杂需求并转化为实际操作步骤的能力。这种能力展示了 AI 在理解人类语言和逻辑方面的进步,是 AGI 的核心能力之一。
随着大型语言模型(LLMs)如 ChatGPT 和专用工具如 Copilot 的发展,AI 在编程领域的应用越来越广泛。这些工具在理解和生成代码的过程中积累的经验和数据,将为开发完全自主的 AI 系统奠定基础。未来,这些系统有望不仅仅是编程助手,而是能够独立设计和实施复杂项目的 AGI 实体。
2. 环境准备 为了搭建一个安全且高效的 Code Agent 环境,我们需要引入两个核心组件:Pandora Box 和 Semantic Kernel。
2.1 Pandora Box Pandora Box 不仅仅是一个 Python 包;它是通往 LLM 基础开发未来的大门。通过提供一个安全、易用且完全开源的解决方案,它使开发者能够探索他们的 LLM 应用和代理的全部潜力。无论你是在创建一个编码助手、一个 AI 数据分析师,还是任何其他 LLM 驱动的工具,Pandora Box 都为你提供了创新和卓越的基础。
它允许你在沙箱环境中执行 Python 代码,这对于 Code Agent 来说至关重要,因为它确保了用户输入的代码不会危害宿主系统的安全。
2.2 Semantic Kernel Semantic Kernel 是微软开源的一个轻量级开发套件,它让你可以轻松构建 AI Agent,并将最新的 AI 模型集成到您的 C#、Python 或 Java 代码库中。它提供了一个简单易用的 API,可以连接到各种 AI 服务,例如 OpenAI、Azure OpenAI 和 Hugging Face 等。作为高效的中间件,它能够快速交付企业级解决方案。
2.3 安装与配置 为了确保环境隔离和安全,建议使用 conda 来创建一个独立的虚拟环境。
conda create -n pandora-box python=3.11
conda activate pandora-box
pip install PandoraBox
获取 API Key 创建 Pandora Box 的 API key 是连接服务的关键步骤。
这将生成一个唯一的 API 密钥,后续需要在代码中配置使用。
启动 HTTP 服务器 使用以下命令启动本地 HTTP 服务器以提供服务:
默认情况下,服务将在 http://127.0.0.1:9501 运行。你可以通过访问该地址的 /openapi.json 端点来验证服务是否启动成功。
3. 完整代码实现 下面将展示如何使用 Semantic Kernel 整合 Azure OpenAI 服务和 Pandora Box 插件,构建一个具备代码执行能力的 Code Agent。
3.1 核心逻辑说明
初始化 Kernel :创建 Semantic Kernel 实例。
添加聊天服务 :配置 AzureChatCompletion 服务。如果没有 Azure 资源,可以直接替换为原生 OpenAI 服务,Semantic Kernel 提供了相应的连接器支持。
加载插件 :将 Pandora Box 服务作为插件添加到 Kernel 中。由于 Pandora Box 是基于 FastAPI 构建的,完美支持 OpenAPI 规范,只需提供 openapi.json 文档路径即可。
配置执行策略 :设置 AzureChatPromptExecutionSettings,其中 tool_choice="auto" 和 function_call_behavior=FunctionCallBehavior.EnableFunctions(auto_invoke=True) 表示 Kernel 会自动进行函数调用,无需人工干预。
对话历史管理 :配置 ChatHistory 以及 system message,将 Pandora Box 创建的 API-key 放入 System Message 中,以便 Agent 知晓如何调用服务。
交互循环 :开始进行多轮对话,接收用户输入并流式输出结果。
3.2 代码示例 import asyncio
from semantic_kernel import Kernel
from semantic_kernel.contents import ChatHistory
from semantic_kernel.connectors.ai.open_ai import (
AzureChatCompletion,
AzureChatPromptExecutionSettings
)
from semantic_kernel.connectors.openapi_plugin import OpenAPIFunctionExecutionParameters
from semantic_kernel.connectors.ai.function_call_behavior import FunctionCallBehavior
from semantic_kernel.functions import KernelArguments
async def main ():
kernel = Kernel()
chat_service = AzureChatCompletion(
default_headers={},
api_key="xxxxxx" ,
api_version="xxxxx" ,
endpoint="xxxxxx" ,
deployment_name="gpt-4-turbo"
)
kernel.add_service(chat_service)
kernel.add_plugin_from_openapi(
plugin_name='PandoraBox' ,
openapi_document_path='http://127.0.0.1:9501/openapi.json' ,
execution_settings=OpenAPIFunctionExecutionParameters(enable_payload_namespacing=True )
)
azure_prompt_execution_settings = AzureChatPromptExecutionSettings(
tool_choice="auto" ,
function_call_behavior=FunctionCallBehavior.EnableFunctions(auto_invoke=True , filters={})
)
history = ChatHistory()
history.add_system_message("""
你是一个 Python 代码助手,可以通过 python 来解决用户的问题。
你可以通过 Python Box 服务创建 python 环境,执行 python 代码,关闭 python 环境等。
一个可用的 api-key:xxxxxxxxxx 通过 pbox a 创建 api-key xxxxxxxxx.
""" )
while True :
user_input = input ("User > " )
if user_input.lower() in ['quit' , 'exit' ]:
break
history.add_user_message(user_input)
result = chat_service.get_streaming_chat_message_contents(
chat_history=history,
settings=azure_prompt_execution_settings,
kernel=kernel,
arguments=KernelArguments()
)
async for token in result:
print (str (token[-1 ]), end='' )
print ()
if __name__ == '__main__' :
asyncio.run(main())
4. 多轮对话案例演示 以下是 Code Agent 在实际场景中的表现,展示了其处理数学问题和代码生成的能力。
User > 创建一个 python 环境
Agent > 已成功创建 Python 环境,您可以在此环境中执行 Python 代码。环境的标识 ID 为:a74ed602-03 f6-4 f89-8 eb6- d88ddfdab7ff。如果需要运行代码,请提供要执行的代码内容。
User > 帮我解一个方程,3x + 5y = 10
Agent > 解方程组 (3x + 5y = 10 ) 和 (5 x + 4 y = 14 ), 得到的解为:
- x ≈ 2.31
- y ≈ 0.62
User > 写代码解
Agent > 这是一个使用 Python 和 NumPy 来解给定的线性方程组的示例代码:
import numpy as np
# 定义系数矩阵
A = np.array ([[3, 5] , [5, 4] ])
# 定义常数项
B = np.array ([10, 14] )
# 使用 numpy 的 linalg.solve 方法来解方程
solution = np.linalg .solve (A , B )
# 打印出解
print('Solution: x = {}, y = {}'.format (solution[0] , solution[1] ))
这段代码首先定义了一个 2 x2 的系数矩阵 A ,表示方程的左侧,和一个向量 B ,表示方程右侧的常数。然后,它使用 np.linalg .solve 函数求解线性方程组 A * X = B 。
User > 运行下
Agent > 解决方程后得到结果为:
- x = 2.307692307692308
- y = 0.615384615384615
5. 安全与最佳实践 在部署 Code Agent 时,安全性是首要考虑的因素。
5.1 API 密钥管理 切勿将 API 密钥硬编码在源代码中。建议通过环境变量或安全的配置文件读取密钥。在上面的示例中,System Message 包含了密钥,这在生产环境中是不推荐的,应改为通过插件参数传递。
5.2 沙箱隔离 Pandora Box 提供的沙箱环境是防止恶意代码执行的关键。确保始终启用沙箱功能,并限制代码执行的时间配额和资源消耗,防止 DoS 攻击。
5.3 错误处理 在生产环境中,应增加对网络异常、API 超时以及插件调用失败的捕获机制。例如,当 Pandora Box 服务不可用时,Agent 应能优雅地提示用户,而不是直接崩溃。
6. 扩展与总结 本教程展示了如何利用 Semantic Kernel 和 Pandora Box 快速构建一个具备代码执行能力的 Code Agent。通过这种方式,你可以轻松扩展 Agent 的功能,例如接入数据库查询、文件操作或其他外部 API。
Code Agent 代表了 AI 从'对话'向'行动'转变的重要趋势。通过不断迭代和优化,我们正在一步步接近创建一个真正的人工通用智能。希望本教程能帮助你开启你的 AGI 探索之旅,并在实际项目中发挥大模型的强大能力。
相关免费在线工具 RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online