Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten przewodnik szybkiego startu przeprowadzi Cię przez proces tworzenia niestandardowego agenta silnika, który odpowiada, używając dowolnego wysyłanego komunikatu.
Wymagania wstępne
Środowisko Python w wersji 3.9 lub nowszej.
- Aby zainstalować język Python, przejdź do https://www.python.org/downloads/witryny i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego.
- Aby sprawdzić wersję, w oknie terminalu wpisz
python --version.
Wybrany edytor kodu. Te instrukcje korzystają z programu Visual Studio Code.
Jeśli używasz programu Visual Studio Code, zainstaluj rozszerzenie języka Python
Inicjowanie projektu i instalowanie zestawu SDK
Utwórz projekt w języku Python i zainstaluj wymagane zależności.
Otwórz terminal i utwórz nowy folder
mkdir echo cd echoOtwórz folder przy użyciu programu Visual Studio Code, używając następującego polecenia:
code .Utwórz środowisko wirtualne przy użyciu wybranej metody i aktywuj je za pomocą programu Visual Studio Code lub w terminalu.
W przypadku korzystania z programu Visual Studio Code możesz użyć tych kroków z zainstalowanym rozszerzeniem języka Python .
Naciśnij F1, wpisz
Python: Create environment, a następnie naciśnij Enter.Wybierz Venv, żeby utworzyć
.venvśrodowisko wirtualne w bieżącym obszarze roboczym.Wybierz instalację języka Python, aby utworzyć środowisko wirtualne.
Wartość może wyglądać następująco:
Python 1.13.6 ~\AppData\Local\Programs\Python\Python313\python.exe
Zainstaluj zestaw SDK agentów
Użyj pip, aby zainstalować pakiet microsoft-agents-hosting-aiohttp za pomocą tego polecenia:
pip install microsoft-agents-hosting-aiohttp
Tworzenie aplikacji serwera i importowanie wymaganych bibliotek
Utwórz plik o nazwie
start_server.py, skopiuj następujący kod i wklej go:# 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 errorTen kod definiuje
start_serverfunkcję, która zostanie użyta w następnym pliku.W tym samym katalogu utwórz plik o nazwie
app.pyz następującym kodem.# 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
Utwórz wystąpienie agenta jako AgentAplication
W app.py dodaj następujący kod, aby utworzyć AGENT_APP jako instancję AgentApplication, i zaimplementuj trzy ścieżki, aby reagować na trzy zdarzenia:
- Aktualizacja konwersacji
- komunikat
/help - wszelkie inne działania
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}")
Uruchom serwer WWW do nasłuchu na hoście lokalnym na porcie 3978
Na końcu app.py uruchom serwer WWW przy użyciu start_server.
if __name__ == "__main__":
try:
start_server(AGENT_APP, None)
except Exception as error:
raise error
Uruchamianie agenta lokalnie w trybie anonimowym
W terminalu uruchom następujące polecenie:
python app.py
Terminal powinien zwrócić następujące informacje:
======== Running on http://localhost:3978 ========
(Press CTRL+C to quit)
Przetestuj agenta lokalnie
Z innego terminala (aby agent nadal działał) zainstaluj Microsoft 365 Agents Playground za pomocą następującego polecenia:
npm install -g @microsoft/teams-app-test-toolUwaga / Notatka
To polecenie używa narzędzia npm, ponieważ Microsoft 365 Agents Playground nie jest dostępny przy użyciu pip.
Terminal powinien zwrócić następujący kod:
added 1 package, and audited 130 packages in 1s 19 packages are looking for funding run `npm fund` for details found 0 vulnerabilitiesUruchom narzędzie testowe, aby wchodzić w interakcję z agentem przy użyciu tego polecenia:
teamsapptesterTerminal powinien zwrócić następujący kod:
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\"}"}}
Polecenie teamsapptester otwiera domyślną przeglądarkę i nawiązuje połączenie z agentem.
Teraz możesz wysłać dowolną wiadomość, aby zobaczyć odpowiedź echo lub wysłać komunikat /help, aby zobaczyć, jak ten komunikat jest kierowany do obsługi _help.
Dalsze kroki
Aprowizuj zasoby usługi Azure Bot do użycia z zestawem SDK agentów
Ten przewodnik szybkiego startu przeprowadzi Cię przez proces tworzenia niestandardowego agenta silnika, który odpowiada tym, co do niego wyślesz.
Wymagania wstępne
Node.js w wersji 22 lub nowszej
- Aby zainstalować Node.js przejdź do nodejs.org i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego.
- Aby sprawdzić wersję, w oknie terminalu wpisz
node --version.
Wybrany edytor kodu. Te instrukcje korzystają z programu Visual Studio Code.
Inicjowanie projektu i instalowanie zestawu SDK
Użyj npm do zainicjowania projektu node.js, tworząc plik package.json i instalując wymagane zależności
Otwórz terminal i utwórz nowy folder
mkdir echo cd echoInicjowanie projektu node.js
npm init -yZainstaluj zestaw SDK agentów
npm install @microsoft/agents-hosting-expressOtwórz folder przy użyciu programu Visual Studio Code, używając następującego polecenia:
code .
Importowanie wymaganych bibliotek
Utwórz plik index.mjs i zaimportuj następujące pakiety NPM do kodu aplikacji:
// index.mjs
import { startServer } from '@microsoft/agents-hosting-express'
import { AgentApplication, MemoryStorage } from '@microsoft/agents-hosting'
Implementacja EchoAgent jako AgentAplikacation
W index.mjs, dodaj następujący kod, aby utworzyć EchoAgent, rozszerzając AgentApplication, i zaimplementować trzy trasy, aby reagować na trzy zdarzenia:
- Aktualizacja konwersacji
- komunikat
/help - wszelkie inne działania
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)
}
}
Uruchom serwer WWW do nasłuchu na hoście lokalnym na porcie 3978
Na końcu index.mjs uruchom serwer internetowy za pomocą startServer w oparciu o Express, używając MemoryStorage jako schowka stanu dla kolejki.
startServer(new EchoAgent(new MemoryStorage()))
Uruchamianie agenta lokalnie w trybie anonimowym
W terminalu uruchom następujące polecenie:
node index.mjs
Terminal powinien zwrócić następujący wynik:
Server listening to port 3978 on sdk 0.6.18 for appId undefined debug undefined
Przetestuj agenta lokalnie
Z innego terminala (aby agent nadal działał) zainstaluj Microsoft 365 Agents Playground za pomocą następującego polecenia:
npm install -D @microsoft/teams-app-test-toolTerminal powinien zwrócić następujący kod:
added 1 package, and audited 130 packages in 1s 19 packages are looking for funding run `npm fund` for details found 0 vulnerabilitiesUruchom narzędzie testowe, aby wchodzić w interakcję z agentem przy użyciu tego polecenia:
node_modules/.bin/teamsapptesterTerminal powinien zwrócić następujący kod:
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\"}"}}
Polecenie teamsapptester otwiera domyślną przeglądarkę i nawiązuje połączenie z agentem.
Teraz możesz wysłać dowolną wiadomość, aby zobaczyć odpowiedź echo lub wysłać komunikat /help, aby zobaczyć, jak ten komunikat jest kierowany do obsługi _help.
Dalsze kroki
Aprowizuj zasoby usługi Azure Bot do użycia z zestawem SDK agentów
Ten szybki start pokazuje, jak pobrać i uruchomić próbkę QuickStart/Empty Agent z GitHuba.
Istnieją dwa główne sposoby rozpoczęcia pracy z zestawem SDK agentów platformy Microsoft 365:
Sklonuj i uruchom przykładowego agenta QuickStart/Empty Agent dostępnego na GitHub
Użyj zestawu narzędzi Microsoft 365 Agents Toolkit. Zestaw narzędzi Agents Toolkit zawiera dwa wbudowane szablony dla programów Visual Studio i Visual Studio Code, które wykorzystują Microsoft 365 Agents SDK do rozpoczęcia pracy z agentem typu QuickStart/Empty oraz agentem pogodowym. Drugi z nich korzysta z usług Azure Foundry lub OpenAI oraz wykorzystuje Semantic Kernel lub LangChain.
Wymagania wstępne
Zanim zaczniesz pracę, potrzebujesz kilku rzeczy. Te kroki wykorzystują przykładową aplikację QuickStart/Empty Agent w szybkim przewodniku .NET, ale można również użyć dowolnego przykładu z zestawu SDK dla agentów.
- SDK .NET 8.0
- Visual Studio lub Visual Studio Code
- Znajomość ASP.NET Core i programowania asynchronicznego w języku C#
-
Pobieranie przykładu
quickstartz usługi GitHub
Otwieranie rozwiązania
Otwórz plik
QuickStart.csprojrozwiązania w programie Visual Studio.Uruchamianie projektu.
Na tym etapie agent działa lokalnie przy użyciu portu 3978.
Przetestuj agenta lokalnie
Zainstaluj Agents Playground, jeśli jeszcze nie został zainstalowany.
winget install agentsplaygroundUruchamianie agenta w programie Visual Studio lub Visual Studio Code
Uruchom testera aplikacji Teams. W wierszu polecenia:
agentsplayground- Narzędzie otwiera przeglądarkę internetową, w której wyświetlane jest narzędzie Teams App Test Tool, gotowe do wysyłania wiadomości do Twojego agenta.
Uruchomiony agent na porcie 3978 powinien automatycznie łączyć się z konsolą testową agenta w przeglądarce, a Ty powinieneś mieć możliwość wchodzenia w interakcję z agentem uruchomionym lokalnie.
Jak działa agent?
Za pomocą zestawu SDK agentów agent jest kompilowany przy użyciu klas AgentApplication i AgentApplicationOptions . Jest to wbudowane w Program.cs plik przykładu.
Utwórz własnego agenta
W przykładzie widać, że gdy agent jest budowany, AgentApplicationOptions jest ładowany, a niestandardowa klasa agenta MyAgent.cs dziedziczy z AgentApplication.
// Add AgentApplicationOptions from appsettings section "AgentApplication".
builder.AddAgentApplicationOptions();
// Add the AgentApplication, which contains the logic for responding to
// user messages.
builder.AddAgent<MyAgent>();
Następnie magazyn jest ładowany domyślnie przy użyciu klasy MemoryStorage. Dzięki temu kontekst może być śledzony w różnych etapach podczas korzystania z funkcji TurnState, jednak należy je zastąpić w środowisku produkcyjnym bardziej trwałą pamięcią, taką jak BlobsStorage lub CosmosDbPartitionedStorage.
builder.Services.AddSingleton<IStorage, MemoryStorage>();
Pozostała część aplikacji agenta używa standardowych wzorców hostingu platformy .NET i dodaje trasy do akceptowania komunikatów w określonym punkcie końcowym. Ścieżki te używają interfejsu IAgent do akceptowania aktywności agenta i udostępniają deweloperom AgentApplication obiekt do pracy z ładunkiem Activity, który jest przekazywany z kanału/klienta.
Dowiedz się więcej o działaniach (Activities) i użyciu Działań
// This receives incoming messages from Azure Bot Service or other SDK Agents
var incomingRoute = app.MapPost("/api/messages", async (HttpRequest request, HttpResponse response, IAgentHttpAdapter adapter, IAgent agent, CancellationToken cancellationToken) =>
{
await adapter.ProcessAsync(request, response, agent, cancellationToken);
});
Dodawanie nowej logiki niestandardowej w metodzie
Deweloperzy dodają logikę niestandardową MyAgent.cs w klasie, która implementuje AgentApplicationelement . Ta klasa używa AgentApplicationOptions do skonfigurowania dowolnych określonych ustawień konfiguracyjnych oraz Program.cs, aby zarejestrować odbiorniki zdarzeń z SDK Agentów, dostępne w AgentApplication, która odnosi się do odpowiedniej niestandardowej metody, gdy te zdarzenia zostaną wywołane przez klienta.
W poniższym przykładzie metoda OnConversationUpdate wyzwala metodę WelcomeMessageAsync , a metoda OnActivity wyzwala metodę OnMessageAsync.
public MyAgent(AgentApplicationOptions options) : base(options)
{
OnConversationUpdate(ConversationUpdateEvents.MembersAdded, WelcomeMessageAsync);
OnActivity(ActivityTypes.Message, OnMessageAsync, rank: RouteRank.Last);
}
Te zdarzenia są kierowane za pośrednictwem punktu końcowego skonfigurowanego w twoim MyProgram.cs i istnieje wiele zdarzeń, z których można korzystać. Najczęstszym elementem jest OnActivity. Aby dowiedzieć się więcej o zdarzeniach implementowanych przez zestaw SDK, zapoznaj się z informacjami na temat pracy z działaniami i specyfikacją protokołu działania.
Po wyzwoleniu metody, na przykład OnMessageAsync w celu zakończenia kolei, możesz zdecydować w Twojej niestandardowej logice odpowiedzieć, wysyłając komunikat z powrotem do klienta, używając metod dostępnych na instancji obiektu klasy TurnContext, która powinna być parametrem w Twojej metodzie, jak pokazano w poniższym przykładzie:
private async Task OnMessageAsync(ITurnContext turnContext, ITurnState turnState, CancellationToken cancellationToken)
{
await turnContext.SendActivityAsync($"You said: {turnContext.Activity.Text}", cancellationToken: cancellationToken);
}
Wskazówka
Przejrzyj inne metody TurnContext dostępne, aby powrócić do klienta.
Teraz znasz podstawy, zapoznaj się z kolejnymi krokami i wykonaj kroki, aby dodać niestandardową logikę obsługi do agenta i wysłać z powrotem różne zdarzenia.
Dalsze kroki
- Dowiedz się więcej o działaniach (Activities) i użyciu Działań
- Przejrzyj zdarzenia AgentApplication, na które klient może odpowiedzieć
- Przejrzyj zdarzenia TurnContext, które można odesłać do klienta
- Aprowizuj zasoby usługi Azure Bot do użycia z zestawem SDK agentów
- Konfigurowanie agenta platformy .NET do używania protokołu OAuth
Środowisko testowe agentów jest domyślnie dostępne, jeśli używasz już zestawu narzędzi Microsoft 365 Agents Toolkit. Jeśli chcesz rozpocząć pracę z zestawem narzędzi, możesz użyć jednego z następujących przewodników: