Поделиться через


Создание простого чат-бота ИИ

Шаблон чат-бота ИИ демонстрирует приложение-бот, похожее на 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.

Создание нового базового проекта чат-бота ИИ

  1. Откройте Visual Studio Code.

  2. Щелкните значок Набора средств Teams на панели действий Visual Studio Code

  3. Выберите Создать новое приложение.

    Снимок экрана: расположение ссылки

  4. Выберите Агент пользовательского обработчика.

    Снимок экрана: параметр выбора пользовательского агента обработчика в качестве нового проекта для создания.

  5. Выберите Базовый чат-бот ИИ.

    Снимок экрана: выбор функций приложения с помощью списка библиотек ИИ.

  6. Выберите JavaScript.

    Снимок экрана: выбор языка программирования.

  7. Выберите Azure OpenAI.

    Снимок экрана: параметр выбора LLM.

  8. Введите учетные данные OpenAI или Azure OpenAI в зависимости от выбранной службы. Выберите ВВОД.

    Снимок экрана: расположение для ввода открытого ключа API Azure.

  9. Выберите Папка по умолчанию.

    Снимок экрана: папка приложения расположения для сохранения.

    Чтобы изменить расположение по умолчанию, выполните следующие действия.

    1. Нажмите кнопку Обзор.
    2. Выберите расположение рабочей области проекта.
    3. Выберите Выбрать папку.
  10. Введите имя приложения, а затем нажмите клавишу ВВОД .

    Снимок экрана: параметр для ввода подходящего имени.

    Вы успешно создали рабочую область проекта бота чата ИИ.

    Снимок экрана: созданный чат-бот ИИ и файл сведений доступен.

  11. В разделе EXPLORER перейдите к файлу env.env.testtool.user>.

  12. Обновите следующие сведения:

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

    Снимок экрана: сведения, обновленные в файле env.

  13. Чтобы выполнить отладку приложения, нажмите клавишу 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 отвечает за модерирование входных и выходных данных, создание планов и их выполнение. Его можно использовать в качестве автономного или перенаправленного в объект приложения. Ниже приведены важные понятия.

    1. Диспетчер запросов. Запросы играют решающую роль в обмене данными и руководстве поведением ИИ для больших языковых моделей (LLM).
    2. Планировщик. Планировщик получает запрос пользователя, который имеет форму запроса или шаблона запроса, и возвращает план для его выполнения. Это достигается с помощью ИИ для смешивания и сопоставления атомарных функций, известных как действия, которые зарегистрированы в системе ИИ. Эти действия объединяются в последовательность шагов, которые завершают задачу.
    3. Действия. Действие — это атомарная функция, зарегистрированная в системе ИИ.
  • Обработчик AfterTurn. После выполнения обработчика действий или системы ИИ библиотека ИИ Teams выполняет afterTurn обработчик. Обработчик позволяет выполнять действие после поворота. Если возвращается значение true, пакет SDK сохраняет состояние поворота в хранилище.

  • Ответ пользователю: библиотека ИИ Teams сохраняет состояние, и бот может отправлять ответы пользователю.

Настройка простого чат-бота ИИ

Вы можете добавить настройки поверх базового приложения для создания сложных сценариев следующим образом:

  1. Настройка запроса. Запросы играют решающую роль в обмене данными и руководстве поведением ИИ 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 определяет следующий синтаксис, который можно использовать в тексте запроса:

    1. {{ $[scope].property }}: библиотека ИИ Teams отрисовывает значение свойства, которое определяется областью действия и определяется в состоянии поворота. Он определяет три такие области: temp, user и conversation. Если область не указан, библиотека по умолчанию использует временный область.

    2. Используется {{$[scope].property}} следующим образом:

      1. В файле определите 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>;
        
      2. src/app/app.ts В файле используйте состояние поворота приложения, чтобы инициализировать приложение.

        const storage = new MemoryStorage();
        const app = new Application<ApplicationTurnState>({
          storage,
          ai: {
            planner,
          },
        });
        
      3. В файле используйте src/prompts/chat/skprompt.txt свойство состояния с заданной областью, например {{$conversation.tasks}}.

  2. Настройка ввода пользователем. Библиотека ИИ Teams позволяет дополнить запрос, отправляемый в LLM, включив входные данные пользователя. При включении входных данных пользователя необходимо указать его в файле конфигурации запроса, задав значение completion.include_inputtrue в src/prompts/chat/config.json. При необходимости можно также настроить максимальное количество входных маркеров пользователя в , src/prompts/chat/config.json изменив completion.max_input_tokens. Это полезно, если требуется ограничить длину входных данных пользователем, чтобы избежать превышения лимита маркера.

  3. Настройка журнала бесед. Пакет 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_tokens при инициализации PromptManager.

      
      const prompts = new PromptManager({
          promptsFolder: path.join(__dirname, "../prompts"),
          max_conversation_history_tokens: 1000,
      });
      
      
  4. Настройка типа модели. Для запроса можно использовать определенную модель. 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 Не поддерживается
  5. Настройка параметров модели:

    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: массив стоп-последовательностей, которые при нажатии останавливает создание.

См. также

Библиотека ИИ Teams