Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве вы научитесь создавать пользовательский агент, который отвечает вам тем же сообщением, которое вы ему отправили.
Предварительные условия
Python 3.9 или новее.
- Чтобы установить Python, перейдите на сайт https://www.python.org/downloads/ и следуйте инструкциям для вашей операционной системы.
- Чтобы проверить версию, введите в окне терминала
python --version.
Редактор кода на ваш выбор. В этих инструкциях используется Visual Studio Code.
Если вы используете Visual Studio Code, установите расширение для Python
Инициализация проекта и установка SDK
Создайте проект на Python и установите необходимые зависимости.
Откройте терминал и создайте новую папку
mkdir echo cd echoОткройте папку в Visual Studio Code, используя следующую команду:
code .Создайте виртуальную среду выбранным вами способом и активируйте ее либо через Visual Studio Code, либо в терминале.
Если вы используете Visual Studio Code, вы можете выполнить следующие шаги при установленном расширении Python.
Нажмите F1, введите
Python: Create environmentи нажмите клавишу ВВОД.Выберите Venv , чтобы создать виртуальную среду
.venvв текущей рабочей области.Выберите установку Python для создания виртуальной среды.
Значение может выглядеть следующим образом:
Python 1.13.6 ~\AppData\Local\Programs\Python\Python313\python.exe
Установите пакет SDK агентов
Используйте pip для установки пакета microsoft-agents-hosting-aiohttp с помощью этой команды:
pip install microsoft-agents-hosting-aiohttp
Создайте серверное приложение и импортируйте необходимые библиотеки
Создайте файл с именем
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, которую мы будем использовать в следующем файле.В этом же каталоге создайте файл с именем
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)
Протестируйте агент локально
В другом терминале (чтобы агент оставался запущенным) установите Microsoft 365 Agents Playground с помощью этой команды:
npm install -g @microsoft/teams-app-test-toolПримечание
Эта команда использует 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Запустите тестовый инструмент для взаимодействия с вашим агентом, используя эту команду:
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 открывает ваш браузер по умолчанию и подключается к вашему агенту.
Теперь вы можете отправить любое сообщение, чтобы увидеть ответ-эхо, или отправить сообщение /help, чтобы увидеть, как это сообщение будет передано обработчику _help.
В этом кратком руководстве вы научитесь создавать пользовательский агент, который отвечает вам тем же сообщением, которое вы ему отправили.
Предварительные условия
Node.js v22 или новее
- Чтобы установить Node.js, перейдите на сайт nodejs.org и следуйте инструкциям для вашей операционной системы.
- Чтобы проверить версию, введите в окне терминала
node --version.
Редактор кода на ваш выбор. В этих инструкциях используется Visual Studio Code.
Инициализация проекта и установка SDK
Используйте npm, чтобы инициализировать проект Node.js, создав package.json и установив необходимые зависимости
Откройте терминал и создайте новую папку
mkdir echo cd echoИнициализируйте проект Node.js
npm init -yУстановите пакет SDK агентов
npm install @microsoft/agents-hosting-expressОткройте папку в 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
Протестируйте агент локально
В другом терминале (чтобы агент оставался запущенным) установите 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Запустите тестовый инструмент для взаимодействия с вашим агентом, используя эту команду:
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 открывает ваш браузер по умолчанию и подключается к вашему агенту.
Теперь вы можете отправить любое сообщение, чтобы увидеть ответ-эхо, или отправить сообщение /help, чтобы увидеть, как это сообщение будет передано обработчику _help.
В этом кратком руководстве вы научитесь создавать пользовательский агент, который отвечает вам тем же сообщением, которое вы ему отправили.
Предварительные условия
.NET 8.0 SDK или выше
- Чтобы установить .NET SDK, перейдите на сайт dotnet.microsoft.com и выполните инструкции для вашей операционной системы.
- Чтобы проверить версию, введите в окне терминала
dotnet --version.
Редактор кода на ваш выбор. В этих инструкциях используется Visual Studio Code.
Инициализация проекта и установка SDK
Используйте dotnet для создания нового веб-проекта и установки необходимых зависимостей.
Откройте терминал и создайте новую папку
mkdir echo cd echoИнициализируйте проект .NET
dotnet new webУстановите пакет SDK агентов
dotnet add package Microsoft.Agents.Hosting.AspNetCoreОткройте папку в 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
Протестируйте агент локально
В другом терминале (чтобы агент оставался запущенным) установите Microsoft 365 Agents Playground с помощью следующей команды:
npm install -g @microsoft/teams-app-test-toolПримечание
Эта команда использует 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Запустите тестовый инструмент для взаимодействия с вашим агентом, используя эту команду:
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 открывает ваш браузер по умолчанию и подключается к вашему агенту.
В поле ввода текста введите и отправьте любое сообщение, чтобы увидеть эхо ответ.
Следующие шаги
- Примеры пакета SDK агентов на GitHub
- Узнайте больше об объектах действий и работе с действиями
- Просмотрите события AgentApplication, на которые агент может реагировать
- Просмотрите события TurnContext, которые агент может отправить клиенту
- Разверните ресурсы Azure бота для использования с пакетом SDK агентов
- Настройка агента .NET для использования OAuth
Agents Playground доступен по умолчанию, если вы уже используете набор инструментов для создания агентов Microsoft 365. Вы можете воспользоваться одним из следующих руководств, если хотите начать работу с набором инструментов: