AI代理是实现预定目标的代码或机制。您给某人提供了一堆工具,并要求他们去实现目标,您可以要求代理商为您执行任务,并为代理提供所需的工具。
本文将解释如何使用我最近发布的OpenAi Agent软件包构建自主代理 - 它允许您轻松地将常规的Nodejs函数转换为使用OpenAI函数API构建的代理工具,从而抽象大部分。现在,您可以创建一堆功能,并且代理将使用其GPT大脑逐步选择一个逐步运行的功能,还可以弄清楚要通过的参数。从本质上讲,用一般智能代替了确定性路径。有兴趣?
您可以在此处查看openai-agent的软件包,而该软件包的github repo的链接如下。但是首先,让我们看看如何创建几个代理商。您是Neo,现在您可以拥有它们。
使用OpenAi-Agent框架ð¢
在打字稿中构建的OpenAi Agent Framework旨在使您的生活更轻松和代码清洁。您可以构建以类似聊天方式进行交互的代理,执行任务并集成现实世界的工具。最好的部分?使用很简单!
首先,确保您安装了Node.js和npm。此软件包是使用TypeScript构建的,因此您可能还希望在全球安装Typescript编译器。您可以使用NPM安装它:
npm install -g typescript
在你开始之前
首先,您可以设置带有打字稿的nodejs项目。如果您已经知道此部分,请跳过下一节有关安装代理
步骤1:初始化node.js project
首先,请确保已安装了node.js。如果您没有安装它,则可以从官方Node.js网站下载它。
接下来,为您的项目创建一个新目录。在您的终端中,导航到要创建此目录并运行以下命令的地方:
mkdir my-node-ts-project && cd my-node-ts-project
然后,通过运行:
初始化您的node.js项目
npm init -y
这将在您的项目目录中创建一个新的package.json
文件。
步骤2:安装打字稿
接下来,安装打字稿并通过运行:
将其添加到您的项目中
npm install --save-dev typescript
步骤3:安装node.js typeScript定义
您还需要Node.js的打字稿定义。您可以通过安装@types/node
包来获得这些:
npm install --save-dev @types/node
步骤4:创建一个打字稿配置文件
打字稿使用称为tsconfig.json
的配置文件来设置您的项目。您可以通过运行:
创建一个新的配置文件
npx tsc --init
这将创建一个具有默认值的新的tsconfig.json
文件。您可以根据需要调整这些设置。基本设置可能看起来像这样:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"rootDir": "src",
"outDir": "dist",
"strict": true,
"moduleResolution": "node",
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
]
}
步骤5:创建您的打字稿源代码
接下来,创建一个src
目录(在我们的tsconfig.json中指定为“ rootdir”),然后添加一个新文件。您可以添加一个带有简单的“ Hello,World”功能的index.ts
文件:
mkdir src && echo 'console.log("Hello, World!");' > src/index.ts
步骤6:设置您的NPM脚本
要轻松编译并运行打字稿代码,请将以下脚本添加到package.json
文件:
{
"scripts": {
"build": "tsc",
"start": "node dist/index.js"
}
}
步骤7:编译并运行打字稿代码
最后,通过运行:
将您的打字稿代码编译为JavaScript
npm run build
并使用:
运行您的node.js程序
npm start
如果正确设置了一切,您应该看到“你好,世界!”输出到您的控制台。
加入:安装和配置OpenAi-Agentð
让乐趣开始。要安装OpenAI代理包,请运行以下命令:
npm install openai-agent
要与OpenAI的GPT功能进行交互并创建代理,您需要一个OpenAI API密钥和要使用的模型ID。要提供这些详细信息,请在项目的根部创建一个.env
文件。您应该访问OpenAI网站,并在注册后获得一个API密钥。
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-3.5-turbo-0613
SERPAPI_API_KEY=your_serp_key
serpapi_api_key是可选的,只有在使用InternetTools时才需要,您可以从https://serpapi.com/
获得免费您需要用实际的OpenAI API键和SERP键
替换your_openai_api_key
和your_serp_key
建立代理ð
创建代理就像实例化OpenAIAgent
类一样简单。这是一个基本示例:
import { OpenAIAgent } from 'openai-agent';
const myAgent = new OpenAIAgent(myApiKey, myModel);
如果添加了.env文件,则在创建代理时不需要提供任何参数。现在您的经纪人已经准备好了!
创建自定义功能ð§
Openaiagent框架的真正力量来自其使用OpenAIFunction
Decorator调用预定义功能的能力。这使您可以创建高度交互式和通用的代理。
这是搜索Internet的函数的示例:
import { OpenAIFunction } from 'openai-agent';
class MyFunctions {
@OpenAIFunction(
"Searches the internet using SerpApi to get search results",
{
query: {
type: "string",
description: "The search query",
required: true,
},
}
)
async searchInternet(query: string): Promise<string> {
// Your search implementation here...
}
}
示例用法ð
设置了代理和功能后,您可以这样将它们放在一起:
import { OpenAIAgent } from 'openai-agent';
// Initialize your OpenAI Agent
const myAgent = new OpenAIAgent(myApiKey, myModel);
// Provide your functions to the agent
const result = await myAgent.runAgent(
"search the internet for 'best AI tools'",
[new MyFunctions()]
);
console.log(result.content);
疯狂的示例用法ð©âð»
这里还有一些更多示例,说明如何使用它来创建具有很少的内置功能套件(终端函数和Internet Functions)的代理。请知道您的工作,因为这将使代理商使用您的终端发布命令以实现其目标。不要破坏世界。
可以使用您的终端ð»的代理商
const agent1 = new OpenAIAgent(process.env.OPENAI_API_KEY, process.env.OPENAI_MODEL);
const osInfoResponse = await agent1.runAgent(
[{ role: "user", content: "get my os info and write a poem about it" }],
[new TerminalFunctions()],5
);
console.log(osInfoResponse?.content);
可以搜索网络ð的代理商
const agent2= new OpenAIAgent(process.env.OPENAI_API_KEY, process.env.OPENAI_MODEL);
const internetSearchResponse = await agent2.runAgent(
[{ role: "user", content: 'search internet for latest news on OpenAI functions and get me the titles & links to top 5 articles' }],
[new InternetFunctions()], 10
);
console.log(internetSearchResponse?.content);
可以使用您的终端做您问ð的代理商
const agent3= new OpenAIAgent(process.env.OPENAI_API_KEY, process.env.OPENAI_MODEL);
const taskResponse = await agent3.runAgent(
[{ role: "user", content: 'you are an expert ai assistant. Ask the user to give you inputs and do what she/he asks for, and do this in a loop, till he types exit' }],
[new TerminalFunctions()], 10
);
console.log(taskResponse?.content);
总结思想ð
OpenAi Agent框架为创建强大而多功能的自主代理提供了一条新的,令人兴奋的途径。无论您是想从Internet获取数据,操纵文件,控制硬件还是只是找到一个好笑话,此软件包都是在工具包中拥有的绝佳工具。
请记住,您可以通过Openai-Agent构建的唯一限制是您的想象力。因此,继续尝试一下!愉快的编码,让AI革命继续!
- Checkout the github repo
- Connect & ask questions in twitter
- Read about Function APIs here if you are not aware about it-如何使用此软件包的OpenAI API/结构的特定知识。