Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
DevUI är utformat som ett exempelprogram för lokal utveckling. Den här sidan beskriver säkerhetsöverväganden och metodtips om du behöver exponera DevUI utöver localhost.
Varning
DevUI är inte avsett för produktionsanvändning. För produktionsdistributioner skapar du ett eget anpassat gränssnitt med hjälp av Agent Framework SDK med lämpliga säkerhetsåtgärder.
Kommer snart
DevUI-dokumentationen för C# kommer snart. Kom tillbaka senare eller se Python-dokumentationen för konceptuell vägledning.
Användargränssnittslägen
DevUI erbjuder två lägen som styr åtkomsten till funktioner:
Utvecklarläge (standard)
Fullständig åtkomst till alla funktioner:
- Felsökningspanel med spårningsinformation
- Snabb omladdning för snabb utveckling (
/v1/entities/{id}/reload) - Distributionsverktyg (
/v1/deployments) - Utförliga felmeddelanden för felsökning
devui ./agents # Developer mode is the default
Användarläge
Förenklat, begränsat gränssnitt:
- Hantering av chattgränssnitt och konversation
- Entitetslista och grundläggande information
- Utvecklar-API:er inaktiverade (snabb inläsning, distribution)
- Allmänna felmeddelanden (information som loggas på serversidan)
devui ./agents --mode user
Authentication
Autentisering med bearertoken är aktiverat som standard. För en loopback-bindning genererar DevUI en token och visar den i konsolen:
devui ./agents
För en upprepningsbar token, ange DEVUI_AUTH_TOKEN eller använd --auth-token. En icke-loopback-bindning kräver en explicit token och nekar utan en:
# Custom token via CLI
devui ./agents --auth-token "your-secure-token"
# Custom token via environment variable
export DEVUI_AUTH_TOKEN="your-secure-token"
devui ./agents --host 0.0.0.0
Alla API-begäranden måste innehålla token i Authorization huvudet:
curl http://localhost:8080/v1/entities \
-H "Authorization: Bearer your-secure-token"
Använd --no-auth endast för isolerad loopback-utveckling. DevUI nekar oautentiserade bindningar som inte är loopback, och även loopback no-auth-läge tar bort skyddet mot begäranden som skickas av fientliga webbplatser.
Rekommenderad distributionskonfiguration
Om du behöver exponera DevUI för slutanvändare (rekommenderas inte för produktion):
DEVUI_AUTH_TOKEN="<secure-dev-token>" devui ./agents --mode user --host 0.0.0.0
Den här konfigurationen:
- Begränsar utvecklarinriktade API:er
- Kräver autentisering
- Binder till alla nätverksgränssnitt
Säkerhetsfunktioner
DevUI innehåller flera säkerhetsåtgärder:
| Feature | Beskrivning |
|---|---|
| Localhost-bindning | Binder till 127.0.0.1 som standard |
| Användarläge | Begränsar utvecklar-API:er |
| Authentication | Autentisering med bearertoken är aktiverat som standard |
| Läge utan autentisering | Tillåts endast på localhost eller 127.0.0.1 |
| Nätverkskopplingar | Kräv att DEVUI_AUTH_TOKEN eller --auth-token |
| Lokal entitetsinläsning | läser bara in entiteter från lokala kataloger eller i minnet |
| Ingen fjärrutförande | Inga funktioner för fjärrkörning av kod |
Metodtips
Hantering av autentiseringsuppgifter
- Lagra API-nycklar och hemligheter i
.envfiler - Kommittera aldrig
.envfiler till versionshantering - Använda
.env.examplefiler för att dokumentera obligatoriska variabler
# .env.example (safe to commit)
OPENAI_API_KEY=your-api-key-here
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
# .env (never commit)
OPENAI_API_KEY=sk-actual-key
AZURE_OPENAI_ENDPOINT=https://my-resource.openai.azure.com/
Nätverkssäkerhet
- Håll DevUI bundet till localhost för utveckling
- Använd en omvänd proxy (nginx, Caddy) om extern åtkomst behövs
- Aktivera HTTPS via omvänd proxy
- Implementera korrekt autentisering på proxynivå
Entitetssäkerhet
- Granska all agentkod och arbetsflödeskod innan du kör
- Läs endast in entiteter från betrodda källor
- Var försiktig med verktyg som har biverkningar (filåtkomst, nätverksanrop)
Resursrensning
Registrera rensningskrokar för att stänga autentiseringsuppgifter och resurser korrekt vid avstängning:
import os
from azure.identity.aio import DefaultAzureCredential
from agent_framework import Agent
from agent_framework.openai import OpenAIChatCompletionClient
from agent_framework_devui import register_cleanup, serve
credential = DefaultAzureCredential()
client = OpenAIChatCompletionClient(
model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
credential=credential,
)
agent = Agent(name="MyAgent", client=client)
# Register cleanup hook - credential will be closed on shutdown
register_cleanup(agent, credential.close)
serve(entities=[agent])
Överväganden för MCP-verktyg
När du använder MCP-verktyg (Model Context Protocol) med DevUI:
# Correct - DevUI handles cleanup automatically
mcp_tool = MCPStreamableHTTPTool(url="http://localhost:8011/mcp", client=chat_client)
agent = Agent(tools=mcp_tool)
serve(entities=[agent])
Important
Använd async with inte kontexthanterare när du skapar agenter med MCP-verktyg för DevUI. Anslutningarna stängs innan körning. MCP-verktyg använder lat initiering och ansluter automatiskt vid första användningen.
Anmärkning
Go-stöd för den här funktionen kommer snart. Se Agent Framework Go-lagringsplatsen för den senaste statusen.
Nästa steg
- Exempel – Bläddra bland exempelagenter och arbetsflöden
- API-referens – Läs mer om API-slutpunkterna