在nodejsððð中使用GPT创建AI代理和工具
#javascript #网络开发人员 #typescript #openai

AI代理是实现预定目标的代码或机制。您给某人提供了一堆工具,并要求他们去实现目标,您可以要求代理商为您执行任务,并为代理提供所需的工具。

本文将解释如何使用我最近发布的OpenAi Agent软件包构建自主代理 - 它允许您轻松地将常规的Nodejs函数转换为使用OpenAI函数API构建的代理工具,从而抽象大部分。现在,您可以创建一堆功能,并且代理将使用其GPT大脑逐步选择一个逐步运行的功能,还可以弄清楚要通过的参数。从本质上讲,用一般智能代替了确定性路径。有兴趣?

您可以在此处查看openai-agent的软件包,而该软件包的github repo的链接如下。但是首先,让我们看看如何创建几个代理商。您是Neo,现在您可以拥有它们。

使用OpenAi-Agent框架ð¢

在打字稿中构建的OpenAi Agent Framework旨在使您的生活更轻松和代码清洁。您可以构建以类似聊天方式进行交互的代理,执行任务并集成现实世界的工具。最好的部分?使用很简单!

首先,确保您安装了Node.jsnpm。此软件包是使用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_keyyour_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革命继续!