Быстрый старт: Создайте и протестируйте базовый агент

Этот быстрый старт помогает вам создать кастомный агент движка , который отвечает любым вашим сообщением.

Необходимые условия

  • Python 3.9 или новее.

    • Чтобы установить Python, перейдите в https://www.python.org/downloads/ и следуйте инструкциям вашей операционной системы.
    • Для проверки версии в окне терминала введите python --version.
  • Редактор кода на ваш выбор. В этих инструкциях используется Visual Studio Code.

    Если используете Visual Studio Code, установите расширение Python

Инициализируйте проект и установите SDK

Создайте проект на Python и установите необходимые зависимости.

  1. Откройте терминал и создайте новую папку

    mkdir echo
    cd echo
    
  2. Откройте папку с помощью Visual Studio Code с помощью этой команды:

    code .
    
  3. Создайте виртуальную среду с выбранным вами способом и активируйте её либо через Visual Studio Code, либо в терминале.

    При использовании Visual Studio Code вы можете использовать эти шаги с установленным расширением Python.

    1. Нажмите F1, введите Python: Create environment и Enter.

      1. Выберите Venv , чтобы создать .venv виртуальную среду в текущем рабочем пространстве.

      2. Выберите установку Python, чтобы создать виртуальную среду.

        Значение может выглядеть так:

        Python 1.13.6 ~\AppData\Local\Programs\Python\Python313\python.exe

  4. Установка SDK агентов

    Используйте pip для установки пакета microsoft-agents-hosting-aiohttp с помощью этой команды:

    pip install microsoft-agents-hosting-aiohttp
    

Создайте серверное приложение и импортируйте необходимые библиотеки

  1. Создайте файл с именем start_server.py, скопируйте следующий код и вставьте его:

    # start_server.py
    from os import environ
    from microsoft_agents.hosting.core import AgentApplication, AgentAuthConfiguration
    from microsoft_agents.hosting.aiohttp import (
       start_agent_process,
       jwt_authorization_middleware,
       CloudAdapter,
    )
    from aiohttp.web import Request, Response, Application, run_app
    
    
    def start_server(
       agent_application: AgentApplication, auth_configuration: AgentAuthConfiguration
    ):
       async def entry_point(req: Request) -> Response:
          agent: AgentApplication = req.app["agent_app"]
          adapter: CloudAdapter = req.app["adapter"]
          return await start_agent_process(
                req,
                agent,
                adapter,
          )
    
       APP = Application(middlewares=[jwt_authorization_middleware])
       APP.router.add_post("/api/messages", entry_point)
       APP.router.add_get("/api/messages", lambda _: Response(status=200))
       APP["agent_configuration"] = auth_configuration
       APP["agent_app"] = agent_application
       APP["adapter"] = agent_application.adapter
    
       try:
          run_app(APP, host="localhost", port=environ.get("PORT", 3978))
       except Exception as error:
          raise error
    

    Этот код определяет start_server функцию, которую мы используем в следующем файле.

  2. В той же директории создайте файл с именем app.py со следующим кодом.

    # app.py
    from microsoft_agents.hosting.core import (
       AgentApplication,
       TurnState,
       TurnContext,
       MemoryStorage,
    )
    from microsoft_agents.hosting.aiohttp import CloudAdapter
    from start_server import start_server
    

Создайте экземпляр агента в виде AgentApplication

В app.py, добавьте следующий код для создания AGENT_APP как экземпляра AgentApplication, и реализуйте три маршрута для ответа на три события:

  • Обновление разговора
  • Послание /help
  • любая другая деятельность
AGENT_APP = AgentApplication[TurnState](
    storage=MemoryStorage(), adapter=CloudAdapter()
)

async def _help(context: TurnContext, _: TurnState):
    await context.send_activity(
        "Welcome to the Echo Agent sample 🚀. "
        "Type /help for help or send a message to see the echo feature in action."
    )

AGENT_APP.conversation_update("membersAdded")(_help)

AGENT_APP.message("/help")(_help)


@AGENT_APP.activity("message")
async def on_message(context: TurnContext, _):
    await context.send_activity(f"you said: {context.activity.text}")

Запустите веб-сервер для прослушивания в localhost:3978

В конце app.py, запустите веб-сервер с start_serverпомощью .

if __name__ == "__main__":
    try:
        start_server(AGENT_APP, None)
    except Exception as error:
        raise error

Запустите агент локально в анонимном режиме

Из терминала выполните эту команду:

python app.py

Терминал должен возвращать следующее:

======== Running on http://localhost:3978 ========
(Press CTRL+C to quit)

Тестируйте агента локально

  1. С другого терминала (чтобы агент работал) установите Microsoft 365 Agents Playground с помощью этой команды:

    npm install -g @microsoft/teams-app-test-tool
    

    Note

    Эта команда использует npm, потому что Microsoft 365 Agents Playground недоступен с помощью pip.

    Терминал должен возвращать что-то вроде:

    added 1 package, and audited 130 packages in 1s
    
    19 packages are looking for funding
    run `npm fund` for details
    
    found 0 vulnerabilities
    
  2. Запустите тестовый инструмент для взаимодействия с вашим агентом с помощью этой команды:

    teamsapptester
    

    Терминал должен возвращать что-то вроде:

    Telemetry: agents-playground-cli/serverStart {"cleanProperties":{"options":"{\"configFileOptions\":{\"path\":\"<REDACTED: user-file-path>\"},\"appConfig\":{},\"port\":56150,\"disableTelemetry\":false}"}}
    
    Telemetry: agents-playground-cli/cliStart {"cleanProperties":{"isExec":"false","argv":"<REDACTED: user-file-path>,<REDACTED: user-file-path>"}}
    
    Listening on 56150
    Microsoft 365 Agents Playground is being launched for you to debug the app: http://localhost:56150
    started web socket client
    started web socket client
    Waiting for connection of endpoint: http://127.0.0.1:3978/api/messages
    waiting for 1 resources: http://127.0.0.1:3978/api/messages
    wait-on(37568) complete
    Telemetry: agents-playground-server/getConfig {"cleanProperties":{"internalConfig":"{\"locale\":\"en-US\",\"localTimezone\":\"America/Los_Angeles\",\"channelId\":\"msteams\"}"}}
    
    Telemetry: agents-playground-server/sendActivity {"cleanProperties":{"activityType":"installationUpdate","conversationId":"5305bb42-59c9-4a4c-a2b6-e7a8f4162ede","headers":"{\"x-ms-agents-playground\":\"true\"}"}}
    
    Telemetry: agents-playground-server/sendActivity {"cleanProperties":{"activityType":"conversationUpdate","conversationId":"5305bb42-59c9-4a4c-a2b6-e7a8f4162ede","headers":"{\"x-ms-agents-playground\":\"true\"}"}}
    

Команда teamsapptester открывает ваш браузер по умолчанию и подключается к агенту.

Твой агент на площадке агента

Теперь вы можете отправить любое сообщение, чтобы увидеть ответ Echo, или отправить сообщение /help , чтобы увидеть, как оно будет передано обработчику _help .

Этот быстрый старт помогает вам создать кастомный агент движка , который отвечает любым вашим сообщением.

Необходимые условия

  • Node.js v22 или новее

    • Чтобы установить Node.js, перейдите в nodejs.org и следуйте инструкциям вашей операционной системы.
    • Для проверки версии в окне терминала введите node --version.
  • Редактор кода на ваш выбор. В этих инструкциях используется Visual Studio Code.

Инициализируйте проект и установите SDK

Используйте npm инициализацию node.js проекта, создав package.json и установив необходимые зависимости

  1. Откройте терминал и создайте новую папку

    mkdir echo
    cd echo
    
  2. Инициализация проекта node.js

    npm init -y
    
  3. Установка SDK агентов

    npm install @microsoft/agents-hosting-express
    
  4. Откройте папку с помощью Visual Studio Code с помощью этой команды:

    code .
    

Импорт необходимых библиотек

Создайте файл index.mjs и импортируйте следующие NPM-пакеты в код вашего приложения:

// index.mjs
import { startServer } from '@microsoft/agents-hosting-express'
import { AgentApplication, MemoryStorage } from '@microsoft/agents-hosting'

Реализовать EchoAgent как AgentApplication

В , добавьте index.mjsследующий код для создания EchoAgent расширения AgentApplication и реализуйте три маршрута для ответа на три события:

  • Обновление разговора
  • Послание /help
  • любая другая деятельность
class EchoAgent extends AgentApplication {
  constructor (storage) {
    super({ storage })

    this.onConversationUpdate('membersAdded', this._help)
    this.onMessage('/help', this._help)
    this.onActivity('message', this._echo)
  }

  _help = async context => 
    await context.sendActivity(`Welcome to the Echo Agent sample 🚀. 
      Type /help for help or send a message to see the echo feature in action.`)

  _echo = async (context, state) => {
    let counter= state.getValue('conversation.counter') || 0
    await context.sendActivity(`[${counter++}]You said: ${context.activity.text}`)
    state.setValue('conversation.counter', counter)
  }
}

Запустите веб-сервер для прослушивания в localhost:3978

В конце index.mjs старта веб-сервер использует startServer на основе Express, используя MemoryStorage в качестве хранилища для поворотного состояния.

startServer(new EchoAgent(new MemoryStorage()))

Запустите агент локально в анонимном режиме

Из терминала выполните эту команду:

node index.mjs

Терминал должен вернуть следующее:

Server listening to port 3978 on sdk 0.6.18 for appId undefined debug undefined

Тестируйте агента локально

  1. С другого терминала (чтобы агент работал) установите Microsoft 365 Agents Playground с помощью этой команды:

    npm install -D @microsoft/teams-app-test-tool
    

    Терминал должен возвращать что-то вроде:

    added 1 package, and audited 130 packages in 1s
    
    19 packages are looking for funding
    run `npm fund` for details
    
    found 0 vulnerabilities
    
  2. Запустите тестовый инструмент для взаимодействия с вашим агентом с помощью этой команды:

    node_modules/.bin/teamsapptester
    

    Терминал должен возвращать что-то вроде:

    Telemetry: agents-playground-cli/serverStart {"cleanProperties":{"options":"{\"configFileOptions\":{\"path\":\"<REDACTED: user-file-path>\"},\"appConfig\":{},\"port\":56150,\"disableTelemetry\":false}"}}
    
    Telemetry: agents-playground-cli/cliStart {"cleanProperties":{"isExec":"false","argv":"<REDACTED: user-file-path>,<REDACTED: user-file-path>"}}
    
    Listening on 56150
    Microsoft 365 Agents Playground is being launched for you to debug the app: http://localhost:56150
    started web socket client
    started web socket client
    Waiting for connection of endpoint: http://127.0.0.1:3978/api/messages
    waiting for 1 resources: http://127.0.0.1:3978/api/messages
    wait-on(37568) complete
    Telemetry: agents-playground-server/getConfig {"cleanProperties":{"internalConfig":"{\"locale\":\"en-US\",\"localTimezone\":\"America/Los_Angeles\",\"channelId\":\"msteams\"}"}}
    
    Telemetry: agents-playground-server/sendActivity {"cleanProperties":{"activityType":"installationUpdate","conversationId":"5305bb42-59c9-4a4c-a2b6-e7a8f4162ede","headers":"{\"x-ms-agents-playground\":\"true\"}"}}
    
    Telemetry: agents-playground-server/sendActivity {"cleanProperties":{"activityType":"conversationUpdate","conversationId":"5305bb42-59c9-4a4c-a2b6-e7a8f4162ede","headers":"{\"x-ms-agents-playground\":\"true\"}"}}
    

Команда teamsapptester открывает ваш браузер по умолчанию и подключается к агенту.

Твой агент на площадке агента

Теперь вы можете отправить любое сообщение, чтобы увидеть ответ Echo, или отправить сообщение /help , чтобы увидеть, как оно будет передано обработчику _help .

Этот быстрый старт помогает вам создать кастомный агент движка , который отвечает любым вашим сообщением.

Необходимые условия

  • .NET 8.0 SDK или более новая версия

    • Чтобы установить .NET SDK, перейдите в dotnet.microsoft.com и следуйте инструкциям вашей операционной системы.
    • Для проверки версии в окне терминала введите dotnet --version.
  • Редактор кода на ваш выбор. В этих инструкциях используется Visual Studio Code.

Инициализируйте проект и установите SDK

Используйте dotnet для создания нового веб-проекта и установки необходимых зависимостей.

  1. Откройте терминал и создайте новую папку

    mkdir echo
    cd echo
    
  2. Инициализация проекта .NET

    dotnet new web
    
  3. Установка SDK агентов

    dotnet add package Microsoft.Agents.Hosting.AspNetCore
    
  4. Откройте папку с помощью Visual Studio Code с помощью этой команды:

    code .
    

Импорт необходимых библиотек

В , замените Program.csсуществующее содержимое и добавьте следующие using операторы для импорта SDK-пакетов в код вашего приложения:

// Program.cs
using Microsoft.Agents.Builder;
using Microsoft.Agents.Builder.App;
using Microsoft.Agents.Builder.State;
using Microsoft.Agents.Core.Models;
using Microsoft.Agents.Hosting.AspNetCore;
using Microsoft.Agents.Storage;
using Microsoft.AspNetCore.Builder;

Реализовать EchoAgent как AgentApplication

В Program.cs, после операторов using добавьте следующий код для создания EchoAgent расширяющегося AgentApplication и реализуйте маршруты для ответа на события:

  • Обновление разговора
  • Любая другая активность
public class EchoAgent : AgentApplication
{
   public EchoAgent(AgentApplicationOptions options) : base(options)
   {
      OnConversationUpdate(ConversationUpdateEvents.MembersAdded, WelcomeMessageAsync);
      OnActivity(ActivityTypes.Message, OnMessageAsync, rank: RouteRank.Last);
   }

   private async Task WelcomeMessageAsync(ITurnContext turnContext, ITurnState turnState, CancellationToken cancellationToken)
   {
        foreach (ChannelAccount member in turnContext.Activity.MembersAdded)
        {
            if (member.Id != turnContext.Activity.Recipient.Id)
            {
                await turnContext.SendActivityAsync(MessageFactory.Text("Hello and Welcome!"), cancellationToken);
            }
        }
    }

   private async Task OnMessageAsync(ITurnContext turnContext, ITurnState turnState, CancellationToken cancellationToken)
   {
      await turnContext.SendActivityAsync($"You said: {turnContext.Activity.Text}", cancellationToken: cancellationToken);
   }
}

Настройте веб-сервер и зарегистрируйте агентное приложение

В Program.cs, после операторов using добавьте следующий код для настройки веб-хоста, регистрации агента и отображения конечной /api/messages точки:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddHttpClient();
builder.AddAgentApplicationOptions();
builder.AddAgent<EchoAgent>();
builder.Services.AddSingleton<IStorage, MemoryStorage>();

var app = builder.Build();

app.MapPost("/api/messages", async (HttpRequest request, HttpResponse response, IAgentHttpAdapter adapter, IAgent agent, CancellationToken cancellationToken) =>
{
    await adapter.ProcessAsync(request, response, agent, cancellationToken);
});

app.Run();

Настройте веб-сервер на прослушивание в localhost:3978

В launchSettings.json, обновите applicationURL его так http://localhost:3978 , чтобы приложение слушало на правильном порте.

Запустите агент локально в анонимном режиме

Из терминала выполните эту команду:

dotnet run

Терминал должен возвращать что-то вроде:

info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:3978

Тестируйте агента локально

  1. С другого терминала (чтобы агент работал) установите Microsoft 365 Agents Playground с помощью следующей команды:

    npm install -g @microsoft/teams-app-test-tool
    

    Note

    Эта команда использует npm, поскольку Microsoft 365 Agents Playground распространяется как npm-пакет.

    Терминал должен возвращать что-то вроде:

    added 1 package, and audited 130 packages in 1s
    
    19 packages are looking for funding
    run `npm fund` for details
    
    found 0 vulnerabilities
    
  2. Запустите тестовый инструмент для взаимодействия с вашим агентом с помощью этой команды:

    teamsapptester
    

    Терминал должен возвращать что-то вроде:

    Telemetry: agents-playground-cli/serverStart {"cleanProperties":{"options":"{\"configFileOptions\":{\"path\":\"<REDACTED: user-file-path>\"},\"appConfig\":{},\"port\":56150,\"disableTelemetry\":false}"}}
    
    Telemetry: agents-playground-cli/cliStart {"cleanProperties":{"isExec":"false","argv":"<REDACTED: user-file-path>,<REDACTED: user-file-path>"}}
    
    Listening on 56150
    Microsoft 365 Agents Playground is being launched for you to debug the app: http://localhost:56150
    started web socket client
    started web socket client
    Waiting for connection of endpoint: http://127.0.0.1:3978/api/messages
    waiting for 1 resources: http://127.0.0.1:3978/api/messages
    wait-on(37568) complete
    Telemetry: agents-playground-server/getConfig {"cleanProperties":{"internalConfig":"{\"locale\":\"en-US\",\"localTimezone\":\"America/Los_Angeles\",\"channelId\":\"msteams\"}"}}
    
    Telemetry: agents-playground-server/sendActivity {"cleanProperties":{"activityType":"installationUpdate","conversationId":"5305bb42-59c9-4a4c-a2b6-e7a8f4162ede","headers":"{\"x-ms-agents-playground\":\"true\"}"}}
    
    Telemetry: agents-playground-server/sendActivity {"cleanProperties":{"activityType":"conversationUpdate","conversationId":"5305bb42-59c9-4a4c-a2b6-e7a8f4162ede","headers":"{\"x-ms-agents-playground\":\"true\"}"}}
    

Команда teamsapptester открывает ваш браузер по умолчанию и подключается к агенту.

Твой агент на площадке агента

В текстовом вводе введите и отправьте любое сообщение, чтобы увидеть ответ эхо.

Дальнейшие действия

Agent Playground доступен по умолчанию, если вы уже используете Microsoft 365 Agents Toolkit. Вы можете воспользоваться одним из следующих руководств, если хотите начать с набором инструментов: