Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этот быстрый старт помогает вам создать кастомный агент движка , который отвечает любым вашим сообщением.
Необходимые условия
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и Enter.Выберите 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-toolNote
Эта команда использует 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 открывает ваш браузер по умолчанию и подключается к агенту.
Теперь вы можете отправить любое сообщение, чтобы увидеть ответ Echo, или отправить сообщение /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 открывает ваш браузер по умолчанию и подключается к агенту.
Теперь вы можете отправить любое сообщение, чтобы увидеть ответ Echo, или отправить сообщение /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-toolNote
Эта команда использует 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 открывает ваш браузер по умолчанию и подключается к агенту.
В текстовом вводе введите и отправьте любое сообщение, чтобы увидеть ответ эхо.
Дальнейшие действия
- Посмотрите образцы Agents SDK на GitHub
- Узнайте больше о мероприятиях и работе с ними
- Просмотрите события AgentApplication, на которые можете ответить от клиента
- Просмотрите события TurnContext, которые можно отправить клиенту
- Provision Azure ресурсы ботов для использования с агентами SDK
- Настройте агент .NET для использования OAuth
Agent Playground доступен по умолчанию, если вы уже используете Microsoft 365 Agents Toolkit. Вы можете воспользоваться одним из следующих руководств, если хотите начать с набором инструментов: