Создание простого чат-бота ИИ
Шаблон чат-бота ИИ демонстрирует приложение-бот, похожее на ChatGPT, которое отвечает на вопросы пользователей и позволяет пользователям взаимодействовать с ботом ИИ в Microsoft Teams. Библиотека ИИ Teams используется для создания шаблона приложения, предоставляя возможности для создания приложений Teams на основе ИИ.
Предварительные условия
Установка | Для использования... |
---|---|
Visual Studio Code | Среды сборки JavaScript, TypeScript или Python. Используйте последнюю версию. |
Набор средств Teams | Расширение Microsoft Visual Studio Code, которое создает шаблон проекта для вашего приложения. Используйте последнюю версию. |
Node.js | Серверной среды выполнения JavaScript. Дополнительные сведения см . вNode.js таблице совместимости версий для типа проекта. |
Microsoft Teams | Microsoft Teams позволяет сотрудничать со всеми пользователями, с которыми вы работаете, с помощью приложений для чата, собраний и звонков в одном месте. |
Azure OpenAI | Сначала создайте ключ API OpenAI, чтобы использовать генеративный предварительно обученный преобразователь OpenAI (GPT). Если вы хотите разместить приложение или получить доступ к ресурсам в Azure, необходимо создать службу Azure OpenAI. |
Создание нового базового проекта чат-бота ИИ
Откройте Visual Studio Code.
Щелкните значок Набора средств Teams на панели действий Visual Studio Code
Выберите Создать новое приложение.
Выберите Агент пользовательского обработчика.
Выберите Базовый чат-бот ИИ.
Выберите JavaScript.
Выберите Azure OpenAI.
Введите учетные данные OpenAI или Azure OpenAI в зависимости от выбранной службы. Выберите ВВОД.
Выберите Папка по умолчанию.
Чтобы изменить расположение по умолчанию, выполните следующие действия.
- Нажмите кнопку Обзор.
- Выберите расположение рабочей области проекта.
- Выберите Выбрать папку.
Введите имя приложения, а затем нажмите клавишу ВВОД .
Вы успешно создали рабочую область проекта бота чата ИИ.
В разделе EXPLORER перейдите к файлу 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 |
Исходный код приложения. |
teamsapp.yml |
Это файл проекта набора средств Teams main. Файл проекта определяет два основных элемента: свойства и определения стадии конфигурации. |
teamsapp.local.yml |
Это переопределяет teamsapp.yml действия, которые обеспечивают локальное выполнение и отладку. |
teamsapp.testtool.yml |
Это переопределяет teamsapp.yml действия, которые обеспечивают локальное выполнение и отладку в средстве тестирования приложений Teams. |
src/index.js |
Настройка сервера приложений бота. |
src/adapter.js |
Настраивает адаптер бота. |
src/config.js |
Определяет переменные среды. |
src/prompts/chat/skprompt.txt |
Определяет запрос. |
src/prompts/chat/config.json |
Настраивает запрос. |
src/app/app.js |
Обрабатывает бизнес-логику для базового чат-бота ИИ. |
Как работает чат-бот Teams ИИ
Библиотека ИИ Teams предоставляет поток для создания интеллектуального чат-бота с возможностями ИИ следующим образом:
TurnContext: объект контекста поворота предоставляет сведения о действии, такие как отправитель и получатель, канал и другие данные, необходимые для обработки действия.
TurnState: объект состояния поворота, аналогичный файлу cookie, хранит данные для текущего поворота. Этот объект, как контекст поворота, проходит через всю логику приложения, включая обработчики действий и систему ИИ.
Проверка подлинности. Если проверка подлинности пользователя настроена, ИИ Teams пытается войти в систему пользователя. Если пользователь уже вошел в систему, пакет SDK получает маркер доступа и продолжает работу. В противном случае пакет SDK инициирует поток входа и завершает текущий поворот.
Обработчики действий. Библиотека ИИ Teams выполняет набор зарегистрированных обработчиков действий, что позволяет обрабатывать несколько типов действий. Система обработчиков действий является основным методом реализации логики бота или приложения расширения сообщений. Это набор методов и конфигураций, которые позволяют регистрировать обратные вызовы, известные как обработчики маршрутов, которые активируются на основе входящего действия. Входящее действие может быть в виде сообщения, реакции на сообщение или практически любого взаимодействия в приложении Teams.
Система ИИ. Система ИИ в библиотеке ИИ Teams отвечает за модерирование входных и выходных данных, создание планов и их выполнение. Его можно использовать в качестве автономного или перенаправленного в объект приложения. Ниже приведены важные понятия.
- Диспетчер запросов. Запросы играют решающую роль в обмене данными и руководстве поведением ИИ для больших языковых моделей (LLM).
- Планировщик. Планировщик получает запрос пользователя, который имеет форму запроса или шаблона запроса, и возвращает план для его выполнения. Это достигается с помощью ИИ для смешивания и сопоставления атомарных функций, известных как действия, которые зарегистрированы в системе ИИ. Эти действия объединяются в последовательность шагов, которые завершают задачу.
- Действия. Действие — это атомарная функция, зарегистрированная в системе ИИ.
Обработчик AfterTurn. После выполнения обработчика действий или системы ИИ библиотека ИИ Teams выполняет
afterTurn
обработчик. Обработчик позволяет выполнять действие после поворота. Если возвращается значениеtrue
, пакет SDK сохраняет состояние поворота в хранилище.Ответ пользователю: библиотека ИИ Teams сохраняет состояние, и бот может отправлять ответы пользователю.
Настройка простого чат-бота ИИ
Вы можете добавить настройки поверх базового приложения для создания сложных сценариев следующим образом:
Настройка запроса. Запросы играют решающую роль в обмене данными и руководстве поведением ИИ LLM. Они служат входными данными или запросами, которые пользователи могут предоставить для получения конкретных ответов из модели. Ниже приведен запрос, который запрашивает у LLM варианты имен:
Запрос
Give me 3 name suggestions for my pet golden retriever.
Отклик
Some possible name suggestions for a pet golden retriever are: - Bailey - Sunny - Cooper
Чтобы использовать проект, созданный с помощью набора средств Teams, можно создать запросы в
src/prompts/chat/skprompt.txt
файле. Запросы, записанные в этом файле, вставляются в запрос, используемый для инструктажа LLM. Библиотека ИИ Teams определяет следующий синтаксис, который можно использовать в тексте запроса:{{ $[scope].property }}
: библиотека ИИ Teams отрисовывает значение свойства, которое определяется областью действия и определяется в состоянии поворота. Он определяет три такие области: temp, user и conversation. Если область не указан, библиотека по умолчанию использует временный область.Используется
{{$[scope].property}}
следующим образом:В файле определите
src/app/turnState.ts
временное состояние, пользовательское состояние, состояние беседы и состояние поворота приложения.turnState.ts
Если файл не существует в проекте, создайте его в разделеsrc/app
.import { DefaultConversationState, DefaultTempState, DefaultUserState, TurnState } from "@microsoft/teams-ai"; export interface TempState extends DefaultTempState { } export interface UserState extends DefaultUserState { } export interface ConversationState extends DefaultConversationState { tasks: Record<string, Task>; } export interface Task { title: string; description: string; } export type ApplicationTurnState = TurnState<ConversationState, UserState, TempState>;
src/app/app.ts
В файле используйте состояние поворота приложения, чтобы инициализировать приложение.const storage = new MemoryStorage(); const app = new Application<ApplicationTurnState>({ storage, ai: { planner, }, });
В файле используйте
src/prompts/chat/skprompt.txt
свойство состояния с заданной областью, например{{$conversation.tasks}}
.
Настройка ввода пользователем. Библиотека ИИ Teams позволяет дополнить запрос, отправляемый в LLM, включив входные данные пользователя. При включении входных данных пользователя необходимо указать его в файле конфигурации запроса, задав значение
completion.include_input
true
вsrc/prompts/chat/config.json
. При необходимости можно также настроить максимальное количество входных маркеров пользователя в ,src/prompts/chat/config.json
изменивcompletion.max_input_tokens
. Это полезно, если требуется ограничить длину входных данных пользователем, чтобы избежать превышения лимита маркера.Настройка журнала бесед. Пакет SDK автоматически управляет журналом бесед, и вы можете настроить его следующим образом:
В
src/prompts/chat/config.json
настройтеcompletion.include_history
. Еслиtrue
задано значение , журнал вставляется в запрос, чтобы llM знал о контексте беседы.Максимальное число сообщений журнала. Настройка
max_history_messages
при инициализацииPromptManager
.const prompts = new PromptManager({ promptsFolder: path.join(__dirname, "../prompts"), max_history_messages: 3, });
Максимальное число маркеров журнала. Настройте
max_conversation_history_tok
ens при инициализацииPromptManager
.const prompts = new PromptManager({ promptsFolder: path.join(__dirname, "../prompts"), max_conversation_history_tokens: 1000, });
Настройка типа модели. Для запроса можно использовать определенную модель.
src/prompts/chat/config.json
В файле настройтеcompletion.model
. Если для запроса не настроена модель, используется модель по умолчанию, настроенная вOpenAIModel
.Модели, поддерживающие пакет SDK, приведены ниже.
Модель Поддерживается gpt-3.5-turbo Поддерживается gpt-3.5-turbo-16k Поддерживается gpt-3.5-turbo-instruct Не поддерживается в версии 1.1.0 gpt-4 Поддерживается gpt-4-32k Поддерживается gpt-4-vision Поддерживается gpt-4-turbo Поддерживается DALL· E Не поддерживается Шептать Не поддерживается TTS Не поддерживается Настройка параметров модели:
src/prompts/chat/config.json
В файле настройте параметры модели при завершении следующим образом:- Max_tokens: максимальное количество маркеров для создания.
- Температура. Модель температуры в виде числа в диапазоне от 0 до 2.
-
Top_p: модели
top_p
в виде числа от 0 до 2. -
Presence_penalty: модели
presence_penalty
в виде числа от 0 до 1. -
Frequency_penalty: модели
frequency_penalty
в виде числа от 0 до 1. - Stop_sequences: массив стоп-последовательностей, которые при нажатии останавливает создание.
См. также
Platform Docs