第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

使用 NestJS 和 OpenAI 構(gòu)建智能 API 代理,讓機器自動處理自然語言查詢 ??

Building AI-Powered API Agents with NestJS and OpenAI Functions 🤖

API是现代应用程序的支柱,使得服务间通信更加无缝。随着人工智能的兴起,我们正在探索让API更加智能和自主的方法。OpenAI的功能调用特性让AI模型可以根据用户输入动态地与API互动,触发特定操作指令。通过将此功能与NestJS结合,我们可以构建智能API代理,处理请求、执行业务逻辑并返回结构化响应。

这篇文章讲述了如何使用NestJS和OpenAI函数调用构建一个由AI驱动的API代理,实现实时数据检索和自动化工作流程。

为什么要在API中使用AI代理?

传统API(应用程序接口)需要明确的用户指令、预设的路径和结构化的数据输入。AI代理通过以下方式来改进这一点:

  • 理解自然语言查询并将它们动态映射到API调用,使交互更加灵活。
  • 自动化多步骤工作流,无需固定的端点约束。
  • 通过在API层处理逻辑来简化前端复杂性
  • 提升对话界面,使AI驱动的助手可以直接与后端服务交互,增强用户体验。

通过将OpenAI的功能调用特性集成到NestJS中,我们可以构建能够动态解释并执行操作的API。

项目开始
1. 搭建一个 NestJS 应用程序项目

首先,创建一个新的NestJS项目。

在终端中输入以下命令:

npx @nestjs/cli new ai-api-agent

然后,切换到 ai-api-agent 目录:

cd ai-api-agent

最后,安装所需的 npm 包:

npm install
2. 安装必要的依赖

我们需要 OpenAI 的 SDK 和 Axios 来发起 API 请求

    npm install openai axios dotenv
3 设置 OpenAI API 密钥

将你的 OpenAI API 密钥添加到环境配置文件 .env 中,

OPENAI_API_KEY=你的OpenAI API密钥
实现由AI驱动的API功能调用
4. 设置OpenAI服务环境

创建一个对接OpenAI API的服务(src/openai/openai.service.ts):

    import { Injectable } from '@nestjs/common';  
    import { Configuration, OpenAIApi } from 'openai';  
    import * as dotenv from 'dotenv';  

    dotenv.config();  
    @Injectable()  
    export class OpenAIService {  
      private openai: OpenAIApi;  
      constructor() {  
        const 配置 = new Configuration({  
          apiKey: process.env.OPENAI_API_KEY,  
        });  
        this.openai = new OpenAIApi(配置);  
      }  
      async processQuery(userInput: string) {  
        const response = await this.openai.createChatCompletion({  
          model: 'gpt-4',  
          messages: [  
            { role: 'system', content: '你的任务是将用户的查询映射到函数调用中。' },  
            { role: 'user', content: userInput }  
          ],  
          functions: [  
            {  
              name: 'fetchUserOrders',  
              description: '获取用户的订单历史',  
              parameters: {  
                type: 'object',  
                properties: {  
                  userId: { type: 'string', description: '用户ID' }  
                },  
                required: ['userId']  
              }  
            }  
          ]  
        });  
        返回 response.data.choices[0].message;  
      }  
    }

此功能将用户输入发送给OpenAI,如有必要,返回一个结构化的函数调用结果。

在控制器中处理函数调用

现在,让我们定义一个控制器来处理并执行AI生成的函数调用。

请创建 src/openai/openai.controller.ts

    import { Controller, Post, Body } from '@nestjs/common';  
    import { OpenAIService } from './openai.service';  
    import { OrderService } from '../order/order.service';  

    @Controller('ai')  
    export class OpenAIController {  
      constructor(  
        private readonly openAIService: OpenAIService,  
        private readonly orderService: OrderService  
      ) {}  
      @Post('query')  
      async handleQuery(@Body('query') query: string) {  
        const aiResponse = await this.openAIService.processQuery(query);  

        if (aiResponse.function_call?.name === 'fetchUserOrders') {  
          const { userId } = aiResponse.function_call.arguments;  
          return this.orderService.getOrdersByUser(userId);  
        }  
        return { message: '没有找到匹配的函数。' };  
      }  
    }
6. 实现订单服务系统

src/order/order.service.ts 文件中创建一个服务来获取用户订单信息:

    import { Injectable } from '@nestjs/common';  

    @Injectable()  
    export class OrderService {  
      private orders = [  
        { id: 1, userId: '123', total: 50, status: '已寄出' },  
        { id: 2, userId: '456', total: 30, status: '正在处理' },  
      ];  
      getOrdersByUser(userId: string) {  
        return this.orders.filter(order => order.userId === userId);  
      }  
    }
7. 注册模块中的服务

打开 src/app.module.ts 文件,并添加新的服务和控制。

    import { Module } from '@nestjs/common';  
    import { OpenAIService } from './openai/openai.service';  
    import { OpenAIController } from './openai/openai.controller';  
    import { OrderService } from './order/order.service';  

    @Module({  
      controllers: [OpenAIController],  
      providers: [OpenAIService, OrderService]  
    })  
    export class AppModule {}
8. 测试具有AI功能的API

启动NestJS服务器:

运行开发模式的命令是:npm run start:dev

给AI API发送一个请求:

POST请求 http://localhost:3000/ai/query  
-H "Content-Type: application/json"  
-d '{"query": "显示用户123的订单信息"}'

AI会识别请求,并返回相应的命令。

瑞典语翻译应为中文:

#

瑞典语翻译应为中文:未来的改进
  • 多步骤函数调用:通过链接API调用,使AI能够执行复杂的工作流程。
  • 认证与授权:通过认证令牌来限制敏感的API操作。
  • 动态函数注册:让AI代理在运行时能够发现并注册新的API函数。
  • 缓存响应:实施缓存机制来提高对频繁请求查询的响应速度。
结论

AI驱动的API代理正在改变我们与后端服务互动的方式。通过结合OpenAI的功能调用和NestJS,开发人员可以创建能理解自然语言并实时执行操作的动态且直观的API。这种转变提升了自动化水平,简化了API结构,并让用户的使用体验更加无缝。随着AI技术的不断进步,自优化和智能API的潜力会越来越大——从而推动软件开发进入新的高效和创新阶段。

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消