Teams AI 库

Teams AI 库是一个以 Teams 为中心的界面,用于访问基于 GPT 的公共语言模型和用户意向引擎,可缓解编写和维护聊天机器人逻辑以与大型语言模型 (LLM) 集成的复杂且昂贵的任务的需求。

用户输入和机器人响应的可视表示形式。

AI 库提供了一种简单的功能驱动方法,可帮助你使用预生成的可重用代码片段快速轻松地创建智能应用,以便你可以专注于构建业务逻辑,而不是学习 Teams 对话应用程序的语义。

为何使用 Teams AI 库?

AI 库是一个以 Teams 为中心的大型语言模型的界面。 你的应用可以使用 LLM 促进与用户进行更自然的对话交互,引导该对话融入应用技能。

你可以专注于编写业务逻辑,并允许 Teams 处理聊天机器人的复杂性,以便你可以轻松地在应用中提取和利用用户意向。

屏幕截图显示了使用 Teams AI 库的好处。

  • AI 库是一个以 Teams 为中心的大型语言模型的界面。 使用预生成的模板添加 Teams 应用功能。

  • 使用提示工程等技术向机器人添加聊天体验等ChatGPT,而内置的安全功能(如审查)可帮助确保机器人始终以适当的方式做出响应。

  • 库包含一个规划引擎,该引擎允许模型识别用户的意向,然后将该意向映射到你实现的操作。

  • 无需更改机器人逻辑即可轻松添加对所选任何 LLM 的支持。

Teams AI 库以 JavaScript 和 C# 语言提供,使你能够利用 AI 的强大功能,并使用他们最熟悉的编程语言为Microsoft Teams 创建智能、用户友好的应用程序。 我们致力于采用一种思维模式,让你使用所需的工具和语言构建 AI 产品,以便在 Teams 上为客户提供最佳体验。

以下是 Teams AI 库提供的一些main功能:

简单的以 Teams 为中心的组件基架

Teams AI 库简化了 Teams 应用模型,以专注于所需的扩展而不是所需的协议。 可以使用预生成模板并将业务逻辑添加到此基架,以添加机器人、消息扩展、自适应卡片或链接展开等模块。

自然语言建模

Teams AI 库使用 GPT 支持的语言模型生成,因此你无需花时间编写对话逻辑和识别用户意向。 构建 AI 支持的 Teams 应用比以往更容易、更合规且一致可用。

机器人可以在上下文中运行,并在机器人识别映射到其中一个机器人操作的用户意向时提供帮助。 这可以提升聊天,而无需用户使用一小组已注册操作显式与机器人通信。

提示工程

提示工程可帮助你根据用户的意图、对话上下文和机器人个性来设计提示。 可以个性化和自定义机器人以满足用户需求。

对话会话历史记录

Teams AI 库可跨消息记住上下文,并通过分析用户行为中的模式来帮助提高机器人性能。

本地化

由于 Teams AI 库使用 OpenAI 的 GPT 模型,因此提供本地化功能。 当用户以任何语言输入时,输入将始终转换为应用理解的意向、实体和结果操作,而无需生成和维护本地化记录。

LLM 模块化

大型语言模型 (LLM) 是一种高级语言模型,它利用潜在变量生成一致且多样化的自然语言文本和样式。

尽管 Teams AI 库构建为使用 Open AI 的 GPT 模型,但你可以灵活地与所选的任何 LLM 交换,而无需更改机器人逻辑。 这意味着你可以选择将应用的内容保留在公共领域之外,并且仅限于首选 LLM 模型。

负责任的 AI

Teams AI 库允许通过以下方式创建合乎道德和负责任的对话应用:

  • 审查挂钩:针对任何审查 API 调节机器人响应。
  • 对话扫描:通过主动检测和修正监视对话并在对话误入歧途时进行干预。
  • 反馈循环:评估机器人的性能,以便进行高质量对话并增强用户体验。

Teams AI 库提供从低代码到复杂方案的支持。 该库通过 AI 构造扩展功能,以构建自然语言建模、特定于场景的用户意向、个性化和自动上下文感知对话。

用于将意向映射到操作的预测引擎

操作和预测的简单界面允许机器人在机器人有信心采取行动时做出反应。 环境状态允许机器人了解意向、使用基于业务逻辑的提示并生成响应。 例如,如果用户外出,需要快速汇总线程,则库:

  1. 将意向理解为摘要。
  2. 允许提示在一段时间内对用户经理进行汇总。
  3. 提供操作以汇总供用户使用的聊天内容。

操作Planner

操作Planner是调用大型语言模型 (LLM) 的main组件,包括用于增强和自定义模型的多项功能。 模型插件简化了为规划器配置所选 LLM 的流程,并随附了同时支持 OpenAI 和 Azure OpenAI LLM 的 OpenAIModel。 可以轻松添加其他模型(如 Llama-2)的其他插件,让你能够灵活地选择最适合你的用例的模型。 内部反馈循环通过修复来自 LLM 的低于标准响应来提高可靠性。

助手 API

注意

Teams AI 库支持 公共开发人员预览版 中的 OpenAI 和 Azure OpenAI 助手 API,以便你开始构建智能助手。

借助助手 API,可以创建功能强大的 AI 助手,能够执行各种任务,这些任务难以使用传统方法进行编码。 它提供对 OpenAI GPT 系统的编程访问,用于从聊天到图像处理、音频处理和构建自定义助手等任务。 API 支持自然语言交互,使开发能够以对话方式理解和响应的助手。

按照快速入门指南创建专门从事数学的助手。

提示管理

动态提示管理是 AI 系统的一项功能,它允许它根据可用的令牌预算和数据源或扩充来调整发送到语言模型的提示的大小和内容。 它可确保提示不超过上下文窗口或包含不相关的信息,从而提高模型的效率和准确性。

增大

使用增强有效增强和指导 AI 模型的响应。 使用不同的扩充模式,可以根据需求定制模型,从而提高其准确性和预期结果。

  • 检索增强生成 (RAG) :自动将实时、动态和指定的外部数据源合并到模型的响应中,从而在不微调或重新训练模型的情况下获取最新且上下文准确的结果。 回答有关当前销售数字或自定义特定用户数据的问题;使用 RAG,模型不再停滞在过去。

  • 独白:创建 AutoGPT 样式的代理,这些代理能够独立执行多步骤操作,并且包括完整的架构验证和自动修复。

  • 序列:使 AI 助手能够返回一系列操作以供执行,同时提高架构验证的可靠性。

  • 函数:通过采用用户定义的 Functions 从模型生成结构化响应。 可以使用 JSON 架构自定义这些函数,以定义参数及其格式。 ActionPlanner 根据架构评估模型响应,根据需要进行修复,从而提高响应可靠性和一致性。

矢量数据源

矢量数据库是一种新型数据库,旨在存储矢量并实现对矢量的高效搜索。 它们返回与用户查询最相关的结果。 矢量数据库中的矢量搜索功能允许检索增强生成使用 LLM 和自定义数据或特定于域的信息。 这包括从自定义数据源中提取相关信息,并通过即时工程将其集成到模型请求中。 在向 LLM 发送请求之前,用户输入、查询或请求将转换为嵌入,并且矢量搜索技术用于查找数据库中最相似的嵌入项。

增强的推理

Teams AI 库提供集成的事实核查系统来处理机器人幻觉。 当用户与 AI 助手交互时,系统会提示机器人在发送之前进行自我反省过程,以批判性方式评估其潜在响应。 自检使机器人能够识别不准确之处并更正其答案,从而提高准确性、质量和上下文相关性。 高级推理可确保 AI 助手成为可靠的信息和判断来源,建立对产品的信任,并吸引用户每天回来。

反馈循环

反馈循环允许机器人验证和更正语言模型的输出。 它检查模型返回的计划或独白的结构和参数,并提供有关错误或缺失信息的反馈。 然后,模型会尝试修复其错误并返回有效的输出。 反馈循环可以提高 AI 系统的可靠性和准确性,并减少幻觉或无效操作的几率。

下表列出了 Teams AI 库的更新:

类型 说明 .NET JavaScript Python
OpenAIModel OpenAIModel 类允许使用一个组件调用 OAI 和 Azure OAI。 可为 LLaMA2 等其他模型类型定义新模型。 ✔️ ✔️ ✔️
嵌入 OpenAIEmbeddings 类允许使用 OAI 或 Azure OAI 生成嵌入。 可以为 OSS 嵌入等内容定义新的嵌入。 ✔️ ✔️
提示 新的基于对象的提示系统可实现更好的令牌管理,并减少溢出模型的上下文窗口的可能性。 ✔️ ✔️ ✔️
增大 通过让开发人员将命名的扩充添加到提示符中,扩充简化了提示工程任务。 仅 functions支持 、 sequencemonologue 样式扩充。 ✔️ ✔️ ✔️
数据源 借助新的 DataSource 插件,可以轻松地将 RAG 添加到任何提示。 可以将命名数据源注册到规划器,然后指定要增加提示的数据源的名称。 ✔️ ✔️

使用 AI SDK 的函数调用

在 AI SDK 中实现的函数调用解锁了许多功能,使 AI 模型能够无缝生成准确的响应。 它支持与外部工具的直接连接,从而使 AI 更加强大。 这些功能包括执行复杂计算、检索重要数据、创建更流畅的工作流以及启用与用户的动态交互。

注意

不支持结构化输出。

若要将函数调用与聊天完成 API 配合使用,请执行以下操作:

  1. 设置规划器,其中默认提示使用工具扩充。 更新机器人应用的以下文件之一:

    • 对于 JavaScript 应用:更新 index.ts
    • 对于 C# 机器人应用:更新 Program.cs
    • 对于 Python 应用:更新 bot.py

    以下代码片段演示如何设置 ToolsAugmentation 类:

    const planner = new ActionPlanner({
        model,
        prompts,
        defaultPrompt: 'tools'
    });
    
  2. config.json 文件中指定工具扩充。

    {
        "schema": 1.1,
        "description": "",
        "type": "",
        "completion": {
    +       "tool_choice": "auto",
    +       "parallel_tool_calls": true,
        },
    +    "augmentation": {
    +        "augmentation_type": "tools"
    +    }
    }
    
  3. 指定文件中的所有 actions.jsonfunction definitions该文件位于 文件夹中prompts。 确保遵循架构,以避免在 LLM 调用操作时出错。

    [{
        "name": "CreateList",
        "description": "Creates a list"
    }]
    
  4. 在课堂中application注册 。handlers

    • 每个处理程序都是在特定事件发生时运行的回调函数。 函数调用处理程序执行代码以响应 事件。
    • 函数调用必须返回字符串作为函数调用的输出。
    • 当模型请求调用任何函数时,这些函数将 DO 映射到 中的命令, Plan 并在 AI 类 run 函数中调用。 然后,输出将返回到具有工具调用 ID 的模型,以显示已使用这些工具。

    以下代码片段演示如何注册 handlers

    app.ai.action("createList", async (context: TurnContext, state: ApplicationTurnState, parameters: ListAndItems) => {
    // Ex. create a list with name "Grocery Shopping".
    ensureListExists(state, parameters.list);
    return `list created and items added. think about your next action`;
    });
    

启用工具选项

可以启用以下工具选项:

  • 启用工具选择:若要允许模型通过启用工具选择来选择它必须调用的函数。 config.json在 文件中:

    • required设置为 tool_choice 以强制模型始终至少调用一个函数。
    • 使用特定函数的定义将 设置为 tool_choice 特定函数。
    • none设置为 tool_choice 以禁用工具。

    tool_choice默认值为 auto。 它使模型能够选择它必须调用的函数。

  • 切换并行工具调用:并行执行工具速度更快,并减少对 API 的来回调用数。 在 config.json 文件中,可以将 设置为 parallel_tool_callstruefalse。 默认情况下, parallel_tool_calls 参数设置为 true

以下代码片段演示如何启用工具选择和切换并行工具调用:

{

    "schema": 1.1,
    "description": "",
    "type": "",
    "completion": {
+       "tool_choice": "auto",
+       "parallel_tool_calls": true,
    },
+    "augmentation": {
+        "augmentation_type": "tools"
+    }
}

代码示例

示例名称 Description .NET Node.js Python
回显机器人 此示例演示如何使用 Bot Framework 和 Teams AI 库将基本对话流合并到 Microsoft Teams 应用程序中。 View View View
搜索命令消息扩展 此示例演示如何使用 Bot Framework 和 Teams AI 库将基本消息扩展应用合并到 Microsoft Teams 应用程序中。 View View View
Typeahead 机器人 此示例演示如何使用 Bot Framework 和 Teams AI 库将自适应卡片中的键入头搜索功能合并到 Microsoft Teams 应用程序中。 View View View
使用 AI 的对话机器人:Teams Chef 此示例演示如何在 Microsoft Teams 中合并基本的聊天机器人行为。 该机器人旨在允许 GPT 代表它促进对话,仅使用自然语言提示文件来引导聊天。 View View
消息扩展:GPT-ME 此示例是一个消息扩展 (ME) ,适用于使用 text-davinci-003 模型帮助用户生成和更新帖子的 Microsoft Teams。 View View View
轻型机器人 此示例演示了 Microsoft Teams 中更复杂的聊天机器人行为。 机器人的构建允许 GPT 代表它促进对话,并手动定义的响应,并将用户意向映射到用户定义的操作。 View View View
列出机器人 此示例演示如何在 Microsoft Teams 中合并基本的聊天机器人行为。 机器人利用 AI 的强大功能来简化工作流,使日常任务有序,并展示操作链功能。 View View View
DevOps 机器人 此示例演示如何在 Microsoft Teams 中合并基本的聊天机器人行为。 机器人使用 gpt-3.5-turbo 模型与 Teams 用户聊天并执行 DevOps 操作,例如创建、更新、会审和汇总工作项。 View View View
20 个问题 此示例展示了语言模型的不可思议的功能和用户意向的概念。 挑战你作为人类玩家的技能,并尝试在 20 个问题内猜测一个秘密,而 AI 支持的机器人会回答你关于机密的查询。 View View View
数学导师助手 此示例演示如何使用 OpenAI 的助手 API 创建基本对话体验。 它使用 OpenAI 的代码解释器工具创建数学专家助手。 View View View
食品订购助手 此示例演示如何创建使用工具调用机器人代码中的操作的对话助手。 这是一家名为“酒吧”的虚构餐厅的食品订购助手,能够在用户点餐时与用户进行复杂的互动。 View View View

后续步骤