1. Code Agent
在人工智能领域,Code Agent不仅是技术进步的一个标志,更是我们迈向人工通用智能(AGI)的关键一步。AGI旨在创造能够执行任何智能任务的AI,而Code Agent的能力——自动编写和优化代码——是实现这一目标的基石之一。通过自动处理复杂的编程任务,Code Agent不仅提高了软件开发的效率,更重要的是,它使机器能够理解和执行与软件开发相关的高级认知任务,这是向AGI过渡的必要条件。
例如,当开发者使用Code Agent描述他们想要实现的功能时,如“创建一个可以自动整理和分类电子邮件的应用程序”,Code Agent不仅生成代码,更展示了理解复杂需求并转化为实际操作步骤的能力。这种能力展示了AI在理解人类语言和逻辑方面的进步,这是AGI的核心能力之一。
随着大型语言模型(LLMs)如ChatGPT和专用工具如Copilot的发展,我们已经看到AI在编程领域的应用越来越广泛,这些工具不仅提高了编程效率,更重要的是,它们在理解和生成代码的过程中积累的经验和数据将为开发完全自主的AI系统奠定基础。这些系统未来有望不仅仅是编程助手,而是能够独立设计和实施复杂项目的AGI实体。通过不断优化和应用这些智能工具,我们正在一步步接近创建一个真正的人工通用智能。
2. 50 行代码入门 AGI
本文将通过简洁明了的方式,仅用50行代码,带领你快速搭建自己的Code Agent。我们将一步步展示如何实现这一强大工具,助你轻松入门人工通用智能(AGI)。通过本教程,你不仅能够理解Code Agent的基本原理和应用,还能亲手实践,开启你的AGI探索之旅。接下来,让我们深入探索Code Agent的搭建过程,并见证它如何简化和革新传统的编程方式。
2.1 环境准备
Pandora Box
Pandora Box不仅仅是一个Python包;它是通往LLM基础开发未来的大门。通过提供一个安全、易用且完全开源的解决方案,它使开发者能够探索他们的LLM应用和代理的全部潜力。无论你是在创建一个编码助手、一个AI数据分析师,还是任何其他LLM驱动的工具,Pandora Box都为你提供了创新和卓越的基础。
Semantic Kernel
Semantic kernel是微软开源的一个轻量级的开源开发套件,它让你可以轻松构建 AI Agent,并将最新的 AI 模型集成到您的 C#、Python 或 Java 代码库中;它提供了一个简单易用的 API,可以连接到各种 AI 服务,例如 OpenAI、Azure OpenAI 和 Hugging Face 等;并且它作为业高效的中间件,能够快速交付企级解决方案。
为了确保环境隔离和安全,最好使用conda
来创建一个独立的虚拟环境。
# python >= 3.11
conda create -n pandora-box python=3.11
conda activate pandora-box
pip install PandoraBox
创建一个pandora box的api-key
$ pbox a
现在,你可以使用以下命令启动HTTP服务器:
$ pbox s
你可以通过http://127.0.0.1:9501/openapi.json或者http://127.0.0.1:9501/docs来验证服务是否启动成功。
2.2 完整代码
下面是完整的代码:
- 创建kernel
- 创建AzureChatCompletion服务,它是Azure的OpenAI服务,没有的可以直接使用OpenAI原生服务,semantic_kernel提供了支持;或者其它HuggingFace服务
- 添加AzureChatCompletion服务到kernel中
- 将PandoraBox服务作为插件添加到kernel(基于openapi.json描述文档即可,PandoraBox是FastAPI服务,所以完美支持)
- 配置Kernel执行过程,AzureChatPromptExecutionSettings设置auto_invoke=True表示kernel自动进行函数调用
- 配置对话history以及system message,将Pandora Box创建的api-key放入其中
- 开始进行对话
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 > ")
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())
2.3 多轮对话Case
1. User > 创建一个python环境
已成功创建Python环境,您可以在此环境中执行Python代码。环境的标识ID为:`a74ed602-03f6-4f89-8eb6-d88ddfdab7ff`。如果需要运行代码,请提供要执行的代码内容。
2. User > 帮我解一个方程,3x + 5y = 10; 5x + 4y = 14;
解方程组 \(3x + 5y = 10\) 和 \(5x + 4y = 14\), 得到的解为:
- \(x \approx 2.31\)
- \(y \approx 0.62\)
3. User > 写代码解
这是一个使用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]))
这段代码首先定义了一个2x2的系数矩阵A,表示方程的左侧,和一个向量B,表示方程右侧的常数。然后,它使用`np.linalg.solve`函数求解线性方程组A * X = B。这里的X是未知数向量[x, y]。运行这段代码将输出x和y的解。
4. User > 运行下
解决方程后得到结果为:
- x = 2.307692307692308
- y = 0.615384615384615
User >
Reference
[1] https://lengm.cn/post/20240622_pandora_box/
[2] https://lengm.cn/post/20240704_semantic_kernel_intro/
[3] https://github.com/pydaxing/PandoraBox
[4] https://learn.microsoft.com/en-us/semantic-kernel/overview/
[5] https://mp.weixin.qq.com/s/ZJTfCkWOrE8omRZEhrj_3g
[6] https://github.com/microsoft/semantic-kernel
[7] https://mp.weixin.qq.com/s/mtaXOGFw3852F1RsZNqF4Q