>  기사  >  기술 주변기기  >  ChatGPT 플러그인 작동 방식

ChatGPT 플러그인 작동 방식

WBOY
WBOY앞으로
2023-05-05 23:22:052449검색

​번역가 | Cui Hao

Reviewer | Chonglou

방금 ChatGPT가 웹에서 작업을 수행할 수 있는 방법인 ChatGPT 플러그인을 발표했습니다. 이는 ChatGPT가 인터넷에 접속하여 최신 콘텐츠와 뉴스를 검색할 수 있을 뿐만 아니라 식료품 구매, 항공편 예약 등과 같은 일부 작업을 우리를 대신하여 수행할 수도 있음을 의미합니다.

ChatGPT 플러그인 작동 방식

구현 프로세스는 매우 간단합니다.

플러그인 공급자는 OpenAPI 표준을 사용하여 API 사양을 작성합니다. 이는 한동안 사용되어 온 표준이며 Swagger와 같은 API 문서 도구를 지지합니다.

그런 다음 이 사양을 ChatGPT에 API를 사용하여 답변을 향상시키는 방법을 설명하는 프롬프트로 컴파일합니다. 사용 가능한 각 엔드포인트에 대한 설명을 포함한 자세한 프롬프트를 상상해 보세요.

마지막으로 사용자는 새로운 질문을 합니다. ChatGPT 에 API의 정보가 필요한 경우 응답하기 전에 요청을 하고 컨텍스트에 추가합니다.

이 프로세스는 작성 당시 공식 OpenAI 문서에 문서화되어 있지만 액세스가 제한되어 있습니다. 아직 액세스 권한을 얻지 못했기 때문에 위의 내용을 기반으로 자체 메커니즘을 구현하기로 결정했습니다. 아래는 내 자신의 ChatGPT 플러그인 메커니즘을 구현하려는 시도입니다.

엄숙히 선언합니다: 저는 은 공개 정보ChatGPT 플러그인을 통해서만 알 수 있습니다. 다른 알 수 있는 채널이 없어요 추가 정보. 이 문서의 데모는 구현 개념을 설명하기 위한 것이며 구현 후의 모습을 나타내지는 않습니다.

API 사양 선택​

첫 번째 단계는 API를 지정하는 방법을 이해하는 것입니다. OpenAI는 몇 가지 샘플 API 사양을 제공하므로 동일한 입력을 사용하여 자체 솔루션을 구현하기로 결정하고 단일 엔드포인트에 대한 간단한 사양을 작성했습니다.

저는 테스트용으로 특별히 제작된 간단한 API인 DummyJSON, 특히 "모든 할일 가져오기" 엔드포인트를 사용합니다. 사양으로 다음 YAML 파일을 작성했습니다.

openapi: 3.0.1
info:
title: TODO Plugin
description: A plugin that allows the user to create and manage a TODO list using ChatGPT. 
version: 'v1'
servers:
- url: https://dummyjson.com/todos
paths:
/todos:
get:
operationId: getTodos
summary: Get the list of todos
parameters:
- in: query
name: limit
schema:
type: integer
description: Number of todos to return
- in: query
name: skip
schema:
type: integer
description: Number of todos to skip from the beginning of the list
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/getTodosResponse'
components:
schemas:
getTodosResponse:
type: object
properties:
todos:
type: array
items:
type: object
properties:
id:
type: int
todo:
type: string
completed:
type: bool
userId:
type: string
description: The list of todos.

위의 구성 파일에 표시된 것처럼 엔드포인트에는 "limit"와 "skip"이라는 두 가지 매개변수가 있습니다.

이제 위의 내용을 변환해야 합니다.

수차례 논의 끝에 마침내 다음과 같은 결과를 얻었습니다.

You are a virtual assistant that helps users with their questions by relying on
information from HTTP APIs. When the user asks a question, you should determine whether
you need to fetch information from the API to properly answer it. If so, you will
request the user to provide all the parameters you need, and then ask them to run the
request for you. When you are ready to ask for a request, you should specify it using
the following syntax:

<http_request>{
"url": "<request URL>",
"method": "<method>",
"body": {<json request body>},
"headers": {<json request headers>}
}</http_request>

Replace in all the necessary values the user provides during the interaction, and do not
use placeholders. The user will then provide the response body, which you may use to
formulate your answer. You should not respond with code, but rather provide an answer
directly.

The following APIs are available to you:

---
<OpenAPI Specification goes here>

告诉ChatGPT以特定的语法回应,并告诉它用户将提供响应。这是因为AI模型不会执行任何API调用——它必须将该操作委托给不同的系统。由于我们无法访问ChatGPT的内部组件,于是要求它将HTTP请求委托给用户。只要隐藏对话转换对最终用户不可见就行了用户甚至感知不到HTTP请求,就万事大吉了

编排​

ChatGPT是一个通过REST API公开的AI模型。向OpenAI模型发出请求只是端到端聊天机器人体验中的一步。这意味着可以设置模型传递的信息,以及向最终用户显示的信息。

为了使用ChatGPT实现虚拟助手的功能,我使用了Bot Framework Composer,这是一种基于UI的工具,允许我们构建对话体验并将其发布到不同的渠道。以下是高级别的解决方案架构:

ChatGPT 플러그인 작동 방식

我用Bot Framework Composer构建了这个虚拟助手,因为它可以快速部署到多个终端用户渠道,且只需要很少的代码。如果您想要复制这个解决方案,您可能还需要考虑使用Power Virtual Agents,尤其是在生产中使用。

以下是对话流程的构建方式:

1. 用户提问

2.ChatGPT用预格式化的消息进行回复:

2.<http_request>{
"url": "https://dummyjson.com/todos?limit=5",
"method": "GET",
"body": "",
"headers": {}
}</http_request>

3.Azure Bot检测到这种格式,并将请求提交给DummyJSON API,而不会牵扯到最终用户。

4.Azure Bot代表用户向ChatGPT发出新请求,以获取响应正文。

5.ChatGPT格式化响应:"这是你的前5个待办事项:..."

6.Azure Bot回复给用户。

즉시 내 관심을 끌었던 한 가지 product는 코드를 생성하여 해당 제품이 다른 웹사이트나 애플리케이션을 호출하는 것을 방지할 수 있습니다. 이러한 이유로 간단한 도메인 허용 목록 을 적용했습니다. 이렇게 하면 모든 요청 이 한 번에 하나씩만 DummyJSON API로 전송될 수 있습니다. 이렇게 하면 메시지 전송 보안.

위는 계획 부분 포인트 을 설정하는 전체적인 아이디어입니다. .

최종 결과​

위의 에서는 경험이 완벽해질 때까지 일부 구현 세부 사항을 건너뛰었습니다. 이것은 통계 도구이므로 올바른 힌트를 찾을 때까지 시행착오를 겪을 수 있습니다. 하지만 궁극적으로 이것이 제가 로봇의 최종 버전과 나눈 대화입니다.

ChatGPT 플러그인 작동 방식

결론​

ChatGPT 플러그인기능 구현위의 빠른 데모보다 복잡합니다. 이 Demo의 목적은 ChatGPT의 통합을 완료하는 방법을 보여주는 것입니다. 저를 믿으세요. 구현 프로세스만큼 기대됩니다. 당신은 매우 궁금합니다. 이 데모는 ChatGPT에 HTTP를 통합하는 기능을 제공하고 가능성을 제공합니다. 커뮤니티에서 무엇을 버릴 수 있는지 보고 싶습니다 신선하다 .

동시에 technology 사용자로서 우리는 책임감을 갖고 있습니다. 악의적인 프롬프트로 인해 Azure Bot이 알 수 없는 서버인데 무슨 일이 일어난 걸까요? 현재 어떤 새로운 공격 벡터가 있습니까? 내가 작성한 에는 간단한 도메인 화이트리스트가 적용되어 있습니다. 새로운 사용 사례가 계속해서 등장하고 있는데 이 정도면 충분할까요? 또한 후속 팁에서 API 사양을 다시 작성했습니다. 이와 관련된 위험이 있습니까? AI과 관련하여 고려해야 할 보안 문제가 많이 있으며 OpenAI는 이를 확실히 알고 있습니다. 전반적으로

이 데모에 깊은 인상을 받았습니다. ChatGPT의 가능성은 정말 무궁무진하며 앞으로 몇 주, 몇 달 동안 이 기능이 어떻게 발전하는지 지켜볼 것입니다. 조만간 Azure OpenAI에서도 볼 수 있기를 바랍니다! 번역자 소개

Cui Hao, 51CTO 커뮤니티 편집자, 선임 설계자는 18년의 소프트웨어 개발 및 아키텍처 경험과 10년의 분산 아키텍처 경험을 보유하고 있습니다. ​

원제:

ChatGPT 플러그인 작동 방식, 작성자: Marco Cardoso​

위 내용은 ChatGPT 플러그인 작동 방식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제