在 Teams 中生成 AI 代理机器人

Microsoft Teams 中的 AI 代理是一种对话聊天机器人,它使用大型语言模型 (LLM) 与用户交互。 它了解用户的意图并选择一系列操作,使聊天机器人能够完成常见任务。

屏幕截图显示了生成 AI 代理机器人请求和响应的过程。

先决条件

安装 用于使用...
Visual Studio Code JavaScript、TypeScript 或 Python 生成环境。 使用最新版本。
Teams 工具包 Microsoft Visual Studio Code扩展,用于为应用创建项目基架。 使用最新版本。
Node.js 后端 JavaScript 运行时环境。 有关详细信息,请参阅 项目类型的Node.js 版本兼容性表
Microsoft Teams Microsoft Teams,在一个位置通过聊天、会议和通话应用与你合作的每个人进行协作。
Azure OpenAI 首先创建 OpenAI API 密钥,以使用 OpenAI 的生成性预训练转换器 (GPT) 。 如果要在 Azure 中托管应用或访问资源,则必须创建 Azure OpenAI 服务。

创建新的 AI 代理项目

  1. 打开 Visual Studio Code

  2. 选择“Visual Studio Code活动栏中的 Teams 工具包”图标

  3. 选择“ 创建新应用”。

    屏幕截图显示了 Teams 工具包边栏中“创建新项目”链接的位置。

  4. 选择“ 自定义引擎代理”。

    屏幕截图显示用于选择自定义引擎代理作为要创建的新项目的选项。

  5. 选择 “AI 代理”。

    屏幕截图显示了使用 AI 库列表选择应用功能的选项。

  6. 若要生成应用,请选择以下任一选项:

    1. 选择“新建”。

      屏幕截图显示了用于选择可用 AI 代理的选项。

    2. 选择 “JavaScript”。

      屏幕截图显示了用于选择编程语言的选项。

    3. 默认情况下, OpenAI 服务处于选中状态,可以选择输入凭据来访问 OpenAI。 选择“Enter”。

      屏幕截图显示输入 Azure 打开 API 密钥的位置。

    4. 选择“ 默认文件夹”。

      屏幕截图显示要保存的位置应用文件夹。

      若要更改默认位置,请执行以下步骤:

      1. 选择“ 浏览”。
      2. 选择项目工作区的位置。
      3. 选择 “选择文件夹”。
    5. 输入应用的应用 名称,然后选择 Enter 键。

      屏幕截图显示了用于输入适当名称的选项。

      已成功创建 AI 代理机器人。

      屏幕截图显示已创建的 ai 聊天机器人,并提供了自述文件。

    6. “资源管理器”下,转到 env.env.testtool.user> 文件。

    7. 更新以下值:

      • SECRET_AZURE_OPENAI_API_KEY=<your-key>
      • AZURE_OPENAI_ENDPOINT=<your-endpoint>
      • AZURE_OPENAI_DEPLOYMENT_NAME=<your-deployment>

      屏幕截图显示了 env 文件中更新的详细信息。

    8. 若要调试应用,请选择 F5 键或从左窗格中选择 “运行和调试” (Ctrl+Shift+D) ,然后从下拉列表中选择“ 在测试工具 (预览) 调试”。

      屏幕截图显示了从选项列表中选择的调试选项。

    测试工具在网页中打开机器人。

    屏幕截图显示了 AI 代理生成新机器人的最终输出。

    浏览机器人应用源代码

    Folder 目录
    .vscode 用于调试的Visual Studio Code文件。
    appPackage Teams 应用清单的模板。
    env 环境文件。
    infra 用于预配 Azure 资源的模板。
    src 应用的源代码。

    可以自定义以下文件,它们演示了一个实现示例来帮助你入门:

    文件 目录
    src/index.js 设置机器人应用服务器。
    src/adapter.js 设置机器人适配器。
    src/config.js 定义环境变量。
    src/prompts/planner/skprompt.txt 定义提示。
    src/prompts/planner/config.json 配置提示。
    src/prompts/planner/actions.json 定义操作。
    src/app/app.js 处理 AI 代理的业务逻辑。
    src/app/messages.js 定义消息活动处理程序。
    src/app/actions.js 定义 AI 操作。

    下面是 Teams 工具包特定的项目文件。 有关 Teams 工具包工作原理的详细信息,请参阅 GitHub 上的完整指南

    文件 目录
    teamsapp.yml 这是main Teams 工具包项目文件。 项目文件定义属性和配置阶段定义。
    teamsapp.local.yml 这将替代 teamsapp.yml 启用本地执行和调试的操作。
    teamsapp.testtool.yml 这将替代 teamsapp.yml 在 Teams 应用测试工具中启用本地执行和调试的操作。

使用 Teams AI 库创建 AI 代理

新建

Teams AI 库提供了一个全面的流程,可简化构建自己的 AI 代理的过程。 需要了解的重要概念如下:

  • 操作:操作是注册到 AI 系统的原子函数。
  • Planner:规划器接收用户的请求,该请求采用提示或提示模板的形式,并返回一个计划来实现它。 这是通过使用 AI 混合和匹配注册到 AI 系统的原子函数(称为操作)来实现的。 这些操作将重新组合为一系列完成目标的步骤。
  • 操作Planner:操作Planner使用 LLM 生成计划。 它可以触发参数化操作,并向用户发送基于文本的响应。

使用助手 API 进行生成

OpenAI 的助手 API 简化了创建 AI 代理的开发工作。 OpenAI 作为一个平台提供了预生成的工具,例如代码解释器、知识检索和函数调用,可简化常见方案所需的代码。

比较 新建 使用助手 API 进行生成
成本 仅 LLM 服务的成本 LLM 服务的成本以及如果在助手 API 中使用工具会产生额外的成本。
开发工作 相对较小
LLM 服务 Azure OpenAI 或 OpenAI 仅限 OpenAI
模板中的示例实现 此应用模板可以聊天并帮助用户管理任务。 此应用模板使用代码解释器工具解决数学问题,并使用函数调用工具获取城市天气。
限制 不适用 Teams AI 库不支持知识检索工具。

自定义应用模板

自定义提示扩充

SDK 提供增强提示的功能。

  • 在 文件中定义的 src/prompts/planner/actions.json 操作将插入提示符中。 这使 LLM 能够了解可用的函数。
  • 在提示符中插入一段内部提示文本,以指示 LLM 根据可用函数确定要调用的函数。 此提示文本命令 LLM 以结构化 json 格式生成响应。
  • SDK 验证 LLM 响应,如果响应格式错误,则允许 LLM 更正或优化响应。

在 文件中 src/prompts/planner/config.json ,配置 augmentation.augmentation_type。 选项包括:

  • Sequence:适用于需要多个步骤或复杂逻辑的任务。
  • Monologue:适用于需要自然语言理解和生成以及更多灵活性和创造力的任务。

生成新的 add 函数

  • 在 文件中 src/prompts/planner/actions.json ,定义操作架构。

    [
        ...
        {
            "name": "myFunction",
            "description": "The function description",
            "parameters": {
                "type": "object",
                "properties": {
                    "parameter1": {
                        "type": "string",
                        "description": "The parameter1 description"
                    },
                },
                "required": ["parameter1"]
            }
        }
    ]
    
  • src/app/actions.ts 文件中,定义操作处理程序。

    // Define your own function
    export async function myFunction(context: TurnContext, state: TurnState, parameters): Promise<string> {
      // Implement your function logic
      ...
      // Return the result
      return "...";
    }
    
  • 在 文件中 src/app/app.ts ,注册操作。

    app.ai.action("myFunction", myFunction);
    

自定义助手创建

该文件 src/creator.ts 将创建新的 OpenAI 助手。 可以通过更新参数(包括指令、模型、工具和函数)来自定义助手。

使用助手 API 添加函数进行生成

当助手提供函数及其执行参数时,SDK 会将此函数与预注册的操作保持一致。 它随后激活操作处理程序并将结果提交回助手。 若要集成函数,请在应用中注册操作。

  • src/app/actions.ts 文件中,定义操作处理程序。

    // Define your own function
    export async function myFunction(context: TurnContext, state: TurnState, parameters): Promise<string> {
      // Implement your function logic
      ...
      // Return the result
      return "...";
    }
    
  • 在 文件中 src/app/app.ts ,注册操作。

    app.ai.action("myFunction", myFunction);
    

另请参阅

Teams AI 库