在 Teams 中生成 AI 代理机器人
Microsoft Teams 中的 AI 代理是一种对话聊天机器人,它使用大型语言模型 (LLM) 与用户交互。 它了解用户的意图并选择一系列操作,使聊天机器人能够完成常见任务。
先决条件
安装 | 用于使用... |
---|---|
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 代理项目
打开 Visual Studio Code。
选择“Visual Studio Code活动栏中的 Teams 工具包”图标
选择“ 创建新应用”。
选择“ 自定义引擎代理”。
选择 “AI 代理”。
若要生成应用,请选择以下任一选项:
选择“新建”。
选择 “JavaScript”。
默认情况下, OpenAI 服务处于选中状态,可以选择输入凭据来访问 OpenAI。 选择“Enter”。
选择“ 默认文件夹”。
若要更改默认位置,请执行以下步骤:
- 选择“ 浏览”。
- 选择项目工作区的位置。
- 选择 “选择文件夹”。
输入应用的应用 名称,然后选择 Enter 键。
已成功创建 AI 代理机器人。
在“资源管理器”下,转到 env.env.testtool.user> 文件。
更新以下值:
SECRET_AZURE_OPENAI_API_KEY=<your-key>
AZURE_OPENAI_ENDPOINT=<your-endpoint>
AZURE_OPENAI_DEPLOYMENT_NAME=<your-deployment>
若要调试应用,请选择 F5 键或从左窗格中选择 “运行和调试” (Ctrl+Shift+D) ,然后从下拉列表中选择“ 在测试工具 (预览) 调试”。
测试工具在网页中打开机器人。
浏览机器人应用源代码
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);