Inicio rápido: Crear y probar un agente básico

Esta guía de inicio rápido le guía por la creación de un agente de motor personalizado que solo responde con el mensaje que envíe a este.

Requisitos previos

  • Python 3.9 o superior.

    • Para instalar Python, visita https://www.python.org/downloads/ y sigue las instrucciones para tu sistema operativo.
    • Para verificar la versión, abre una ventana de terminal y escribe python --version.
  • Un editor de código de tu preferencia. Estas instrucciones usan Visual Studio Code.

    Si utiliza Visual Studio Code, instale extensión de Python

Inicializar el proyecto e instalar el SDK

Crear un proyecto de Python e instalar las dependencias necesarias.

  1. Abrir un terminal y crear una nueva carpeta

    mkdir echo
    cd echo
    
  2. Abrir la carpeta en Visual Studio Code utilizando este comando:

    code .
    
  3. Crea un entorno virtual con el método que elijas y actívalo ya sea a través de Visual Studio Code o en un terminal.

    Al usar Visual Studio Code, puedes usar estos pasos con la extensión de Python instalada.

    1. Pulse F1, escriba Python: Create environment y pulse Entrar.

      1. Selecciona Venv para crear un .venv entorno virtual en el espacio de trabajo actual.

      2. Selecciona una instalación de Python para crear el entorno virtual.

        El valor podría tener este aspecto:

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

  4. Instalar la SDK de Agentes

    Usa pip para instalar el paquete microsoft-agents-hosting-aiohttp con este comando:

    pip install microsoft-agents-hosting-aiohttp
    

Crea la aplicación de servidor e importa las bibliotecas necesarias

  1. Cree un archivo llamado start_server.py, copie el código siguiente y péguelo en:

    # 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
    

    Este código define una start_server función que usaremos en el siguiente archivo.

  2. En el mismo directorio, cree un archivo denominado app.py con el siguiente código.

    # 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
    

Crear una instancia del agente como AgentApplication

En app.py, añade el siguiente código para crear el AGENT_APP como una instancia de AgentApplication, e implementar tres rutas para responder a tres eventos:

  • Actualización de la conversación
  • el mensaje /help
  • cualquier otra actividad
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}")

Inicia el servidor web para escuchar en localhost:3978

Al final de app.py, inicia el servidor web usando start_server.

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

Ejecutar el agente localmente en modo anónimo

Desde tu terminal, ejecuta este comando:

python app.py

La terminal debería mostrar lo siguiente:

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

Probar el agente localmente

  1. Desde otro terminal (para mantener el agente en funcionamiento), instala Microsoft 365 Agents Playground con este comando:

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

    Nota

    Este comando utiliza npm porque Microsoft 365 Agents Playground no está disponible usando pip.

    La terminal debería mostrar algo como:

    added 1 package, and audited 130 packages in 1s
    
    19 packages are looking for funding
    run `npm fund` for details
    
    found 0 vulnerabilities
    
  2. Ejecuta la herramienta de prueba para interactuar con tu agente usando este comando:

    teamsapptester
    

    La terminal debería mostrar algo como:

    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\"}"}}
    

El comando teamsapptester abre tu navegador predeterminado y conecta con tu agente.

El agente en el área de juegos de agentes

Ahora puedes enviar cualquier mensaje para ver la respuesta de eco, o enviar el mensaje /help para ver cómo ese mensaje se enruta al controlador _help.

Esta guía de inicio rápido le guía por la creación de un agente de motor personalizado que solo responde con el mensaje que envíe a este.

Requisitos previos

  • Node.js v22 o posterior

    • Para instalar Node.js, accede a nodejs.org y sigue las instrucciones para tu sistema operativo.
    • Para verificar la versión, abre una ventana de terminal y escribe node --version.
  • Un editor de código de tu preferencia. Estas instrucciones usan Visual Studio Code.

Inicializar el proyecto e instalar el SDK

Usa npm para inicializar un proyecto de Node.js creando un package.json e instalando las dependencias necesarias

  1. Abrir un terminal y crear una nueva carpeta

    mkdir echo
    cd echo
    
  2. Inicializa el proyecto de Node.js

    npm init -y
    
  3. Instalar la SDK de Agentes

    npm install @microsoft/agents-hosting-express
    
  4. Abra la carpeta en Visual Studio Code usando este comando:

    code .
    

Importación de las bibliotecas necesarias

Crea el archivo index.mjs e importa los siguientes paquetes NPM en tu código de aplicación:

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

Implementar el EchoAgent como AgentApplication

En index.mjs, añade el siguiente código para crear la EchoAgent extendiendo la AgentApplication e implementar tres rutas para responder a tres eventos:

  • Actualización de la conversación
  • el mensaje /help
  • cualquier otra actividad
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)
  }
}

Inicia el servidor web para escuchar en localhost:3978

Al final de index.mjs, inicia el servidor web usando startServer basado en express y utilizando MemoryStorage como almacenamiento del estado de turno.

startServer(new EchoAgent(new MemoryStorage()))

Ejecutar el agente localmente en modo anónimo

Desde tu terminal, ejecuta este comando:

node index.mjs

La terminal debería mostrar esto:

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

Probar el agente localmente

  1. Desde otro terminal (para mantener el agente en funcionamiento), instala Microsoft 365 Agents Playground con este comando:

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

    La terminal debería mostrar algo como:

    added 1 package, and audited 130 packages in 1s
    
    19 packages are looking for funding
    run `npm fund` for details
    
    found 0 vulnerabilities
    
  2. Ejecuta la herramienta de prueba para interactuar con tu agente usando este comando:

    node_modules/.bin/teamsapptester
    

    La terminal debería mostrar algo como:

    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\"}"}}
    

El comando teamsapptester abre tu navegador predeterminado y conecta con tu agente.

El agente en el área de juegos de agentes

Ahora puedes enviar cualquier mensaje para ver la respuesta de eco, o enviar el mensaje /help para ver cómo ese mensaje se enruta al controlador _help.

Esta guía de inicio rápido le guía por la creación de un agente de motor personalizado que solo responde con el mensaje que envíe a este.

Requisitos previos

  • .NET 8.0 SDK o versiones posteriores

    • Para instalar el SDK .NET, ve a dotnet.microsoft.com y sigue las instrucciones de tu sistema operativo.
    • Para verificar la versión, abre una ventana de terminal y escribe dotnet --version.
  • Un editor de código de tu preferencia. Estas instrucciones usan Visual Studio Code.

Inicializar el proyecto e instalar el SDK

Utiliza dotnet para crear un nuevo proyecto web e instalar las dependencias requeridas.

  1. Abrir un terminal y crear una nueva carpeta

    mkdir echo
    cd echo
    
  2. Inicializa el proyecto .NET

    dotnet new web
    
  3. Instalar la SDK de Agentes

    dotnet add package Microsoft.Agents.Hosting.AspNetCore
    
  4. Abrir la carpeta en Visual Studio Code utilizando este comando:

    code .
    

Importación de las bibliotecas necesarias

En Program.cs, reemplaza el contenido existente y añade las siguientes using líneas para importar los paquetes del SDK en tu aplicación:

// 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;

Implementar el EchoAgent como AgentApplication

En Program.cs, después de las instrucciones de using, añade el siguiente código para crear la EchoAgent extendiendo la AgentApplication e implementar tres rutas para responder a tres eventos:

  • Actualización de la conversación
  • Cualquier otra actividad
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);
   }
}

Configura el servidor web y registra la aplicación del agente

En Program.cs, después de las sentencias using, añade el siguiente código para configurar el servidor web, registrar el agente y mapear el punto de conexión /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();

Configura el servidor web para que escuche en localhost:3978

En launchSettings.json, actualiza el applicationURL a http://localhost:3978 para que la aplicación escuche en el puerto correcto.

Ejecutar el agente localmente en modo anónimo

Desde tu terminal, ejecuta este comando:

dotnet run

La terminal debería mostrar algo como:

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

Probar el agente localmente

  1. Desde otro terminal (para mantener el agente en funcionamiento), instala Microsoft 365 Agents Playground con el siguiente comando:

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

    Nota

    Este comando utiliza npm porque Microsoft 365 Agents Playground se distribuye como un paquete npm.

    La terminal debería mostrar algo como:

    added 1 package, and audited 130 packages in 1s
    
    19 packages are looking for funding
    run `npm fund` for details
    
    found 0 vulnerabilities
    
  2. Ejecuta la herramienta de prueba para interactuar con tu agente usando este comando:

    teamsapptester
    

    La terminal debería mostrar algo como:

    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\"}"}}
    

El comando teamsapptester abre tu navegador predeterminado y conecta con tu agente.

El agente en el área de juegos de agentes

En el campo de texto, escriba y envíe cualquier mensaje para ver la respuesta de eco.

Pasos siguientes

Agents Playground está disponible de manera predeterminada si ya estás usando Microsoft 365 Agents Toolkit. Puede usar una de las siguientes guías si desea empezar con el kit de herramientas: