51CTO Blog地址:https://blog.51cto.com/u_13969817

APIPlugin使Copilot for Microsoft 365能够与OpenAPI规范描述的REST API进行交互。使用APIPlugin,Copilot用户可以要求Copilot不仅查询REST API以获取信息,还可以创建、更新和删除数据和对象。REST API可以做的任何事情都可以通过自然语言提示进行访问。

Plugin使Microsoft Copilot能够使用web服务并获取实时信息。Copilot利用这些信息来扩展其技能。使用Plugin,用户可以将业务线(LOB)系统中的实时数据带到Copilot。

Plugin由web服务、其OpenAPI描述和清单文件组成。Plugin清单通知CopilotPlugin的功能。Plugin清单包括web服务的OpenAPI描述。OpenAPI描述很重要,因为它向Copilot描述了如何连接到web服务。为了获得Copilot的最佳Plugin性能,

在这里,我们假设您有一个web服务和该web服务的OpenAPI描述。

OpenAPI验证:第一步是验证OpenAPI描述是否符合OpenAPI规范的规则。一个有效的OpenAPI描述不仅可以很好地与Copilot配合使用,还可以确保您的OpenAPI说明可以与其他工具配合使用。

信息部分:描述字段在OpenAPI规范中是可选的,但对于旨在扩展Copilot技能的OpenAPI描述来说,它是必不可少的。Copilot需要描述字段来了解API做什么以及何时使用Plugin。始终有一个描述字段,并使其简短而清晰。例如,这里有一个维修店web服务OpenAPI描述的信息部分。

Microsoft 365 开发:如何使OpenAPI文档有效地扩展Copilot:Plugin_OpenAI

Operation IDs:增强OpenAPI描述可用性的一种有用技术是为API提供的API路径和HTTP方法的每个组合添加一个Operation ID。Operation IDs是API中操作的唯一标识符,由Copilot用于创建响应用户提示时执行的函数。

另外,添加API支持的每个操作的有意义的描述。Copilot根据用户的提示和Plugin描述选择使用Plugin后,它会搜索路径的描述,以确定用于满足用户请求的端点。

Operation IDs在调试期间显示为函数,用于指示Copilot试图执行的操作。以下是openAPI文档的示例和相应调试器输出的示例:

Microsoft 365 开发:如何使OpenAPI文档有效地扩展Copilot:Plugin_Plugin_02

Debugger output:

Microsoft 365 开发:如何使OpenAPI文档有效地扩展Copilot:Plugin_Plugin_03

Parameters: 如果API支持的操作接收Parameters,请在OpenAPI描述中包含这些Parameters。包括每个Parameters的描述字段以简要描述它,并在必要时提供Parameters用法的示例。Copilot使用Parameters从用户向API发出请求的提示中获取所需的所有信息。

以下是一个示例:

parameters:
  - name: assignedTo
    in: query
    description: The name or ID of the person or team to whom the repair is assigned.
    schema:
      type: string
required: false

响应:明确定义每个操作的所有可能响应,包括成功和错误响应。每个响应都应该有一个状态代码和它所代表的内容的描述。包括回复示例有助于Copilot了解API的预期。

responses:
 
'200':
    description: A listof repairs
    content:
     
application/json:
        schema:
          type: array
          items:
            $ref:'#/components/schemas/Repair'
        examples:
          example1:
            value:
              [
                {
                  "id": "1",
                  "item": "Laptop",
                  "status": "In
Progress",
                  "assignedTo": "John
Doe"
                }
              ]
 
'404':
    description: No repairsfound
 
'500':
    description: Server error