Integracje¶
FastFence chroni operacje skierowane przez jego bramkę. Istniejące połączenia agenta trzeba jawnie skierować do chronionych adapterów. Instalacja FastFence nie przechwytuje automatycznie pozostałego ruchu sieciowego agenta.
Narzędzia i modele REST¶
Endpointy agenta wymagają wystawionego tokenu bearer agenta. Endpointy zarządzania wymagają osobnego tokenu administratora. Interaktywny schemat API jest dostępny lokalnie pod http://127.0.0.1:8000/docs.
Chronione operacje zapisu REST uwierzytelniają klienta przed odczytem i parsowaniem treści. Całe żądanie wywołania ma limit 512 KiB rzeczywiście przesłanych bajtów, także przy przesyle fragmentami i znakach escapowanych w JSON. Żądania administracyjne używają większej wartości z 512 KiB i zaufanego ustawienia FASTFENCE_MAX_CONFIG_SOURCE_BYTES (maksymalnie 2 MiB). Zbyt duże żądania otrzymują bezpieczny błąd 413, bez wywołania usługi docelowej i rezerwacji budżetu. Aktywna polityka niezależnie ogranicza logiczne dane wejściowe do 64 KiB. Adapter zgodny z OpenAI ma osobny limit całego żądania 64 KiB.
| Endpoint | Przeznaczenie |
|---|---|
POST /api/invoke |
Wywołanie dozwolonego narzędzia ze sprawdzonymi argumentami |
POST /api/models/complete |
Wywołanie dozwolonego modelu Ollama z promptem lub wiadomościami |
GET /v1/models |
Modele dozwolone dla zweryfikowanej roli |
POST /v1/chat/completions |
Ograniczony interfejs czatu zgodny z OpenAI |
GET /acp/agents |
Skonfigurowani agenci ACP dostępni dla klienta |
POST /acp/runs |
Synchroniczne wywołanie tekstowe agenta ACP z kontrolą wejścia i wyjścia |
GET /api/me |
Zaufane atrybuty tożsamości nadane przez serwer |
GET /api/admin/status |
Polityka, budżety, telemetria i audyt bez poufnych treści |
GET /api/admin/audit.jsonl |
Eksport zachowanych rekordów audytu |
Implementacje biznesowe rejestruje aplikacja. Uruchom przykład serwera FastMCP na porcie 8010, a następnie wyślij tę treść do jego /api/invoke z tokenem agenta należącym do przykładu:
Rzeczywiste odpowiedzi modelu wymagają uruchomionej usługi Ollama, zainstalowanego modelu i aktywnej polityki dopuszczającej ten model. Wiadomości system, user i assistant korzystają z Ollama /api/chat, a zwykłe prompty z /api/generate. Każda wiadomość i sekwencja stop przechodzą przez te same kontrole oraz rozliczanie zasobów.
Adapter zgodny z OpenAI obsługuje ograniczone wiadomości tekstowe, odpowiedzi bez strumieniowania, temperaturę zero i jeden wynik. Limit tokenów odpowiedzi jest ograniczany limitem bramki i polityką modelu. Strumieniowanie, wygenerowane wywołania narzędzi, treści multimodalne, opcje odpowiedzi strukturalnej i nieobsługiwane pola są jawnie odrzucane. usage ma wartość null, ponieważ zachowawcze jednostki budżetu bramki nie są dokładnym rozliczeniem dostawcy. Zachowane są informacje stop/length oraz metadane decyzji bramki.
MCP¶
Endpoint Streamable HTTP MCP to http://127.0.0.1:8000/mcp/. Przyjmuje zweryfikowane tokeny agenta i udostępnia:
- Narzędzie
invokeprzyjmujące nazwę dozwolonego narzędzia biznesowego i argumenty. - Narzędzie
completeprzyjmującemodel,prompti ograniczonemax_output_tokens; korzysta z tej samej ścieżki kontroli modelu co HTTP. - Zasób
memory://{tenant}/{key}, wywołujący chronioną operacjęmemory.read.
Przypięta implementacja transportu MCP uwierzytelnia przed parsowaniem JSON i ogranicza treść HTTP do 4 MiB. Ten limit protokołu jest oddzielny od mniejszego limitu danych wejściowych modelu lub narzędzia w polityce. Komunikaty protokołu, takie jak ping, nie uruchamiają operacji biznesowej.
Generowanie przez MCP wymaga zainstalowanego, dozwolonego modelu. Reguły wejścia i wyjścia, prywatność, ocena semantyczna, budżety i audyt działają tak samo jak dla HTTP. Serwer udostępnia zarejestrowane operacje, nie jest dowolnym proxy do wszystkich serwerów MCP.
W katalogu zainicjalizowanej instalacji zapisz i uruchom ten kompletny klient Python:
import asyncio
import json
from pathlib import Path
from fastmcp import Client
from fastmcp.client.auth import BearerAuth
async def main():
credentials = json.loads(Path("state/credentials.json").read_text())
async with Client(
"http://127.0.0.1:8000/mcp/",
auth=BearerAuth(credentials["local-agent"]),
) as client:
completion = await client.call_tool(
"complete", {"model": "qwen3:4b", "prompt": "Cat", "max_output_tokens": 16}
)
print(completion.data)
asyncio.run(main())
Istniejące instalacje zachowują pierwotny plik danych dostępu i nazwy tożsamości. Jeśli inicjalizacja wskazuje starszy state/demo-tokens.json, użyj tokenu jego agenta. Nie rotuj ani nie nadpisuj tokenów tylko po to, aby zmienić nazwy.
Zasoby tenanta muszą odpowiadać zweryfikowanej tożsamości. Kontrola polityk działa przed utworzeniem tekstowej i strukturalnej reprezentacji wyniku przez FastMCP, więc obie zawierają przefiltrowaną odpowiedź.
Agenci ACP¶
Endpoint zgodności z Agent Communication Protocol to /acp. Skonfiguruj zaufane adresy agentów w FASTFENCE_ACP_AGENTS, a następnie dopuść narzędzia acp.<alias> i odpowiednie role w polityce. Kompletny przykład ACP korzysta z oficjalnego SDK do wywołania osobnego agenta przez FastFence.
Adapter obsługuje synchroniczne, bezstanowe wiadomości ze zwykłym tekstem umieszczonym bezpośrednio w treści. Odrzuca sesje wybrane przez klienta, strumieniowanie i załączniki. Automatycznie wygenerowane identyfikatory sesji agenta docelowego są pomijane. Tekst przechodzi przez te same kontrole wejścia i wyjścia co inne narzędzia; token klienta nigdy nie staje się tokenem agenta docelowego. ACP przeniosło się do A2A. Ten adapter zachowuje opisany profil zgodności ACP i nie implementuje A2A.
Rzeczywista integracja Laya¶
Pakiet korzysta z silnika Laya w Pythonie w przypiętej rewizji. Zwykłe fastfence init instaluje go w katalogu instalacji i sprawdza lub pobiera skonfigurowany model oceniający przez Ollama. fastfence setup-laya służy jedynie do osobnej instalacji lub naprawy silnika. Pobiera zewnętrzny silnik, zachowuje informacje licencyjne i instaluje zależności ze sprawdzanymi hashami w prywatnym stanie lokalnym. Potrzebuje Git, sh i uv, ale nie repozytorium FastFence.
Laya pełni dwie niezależne role:
- Ocena w trakcie żądania: nazwane reguły języka naturalnego i wytyczne bezpieczeństwa analizują wejście i wyjście za pomocą rzeczywistego modelu. Klient polityk semantycznych testuje próbki, pokazuje różnice i aktywuje zmianę tylko z jawnym
--activate. - Tworzenie szybkich reguł: Describe a fast rule przygotowuje ograniczoną propozycję deterministyczną z podglądem treści i testami regresyjnymi. Przejrzyj ją i aktywuj; późniejsze dopasowanie literalne nie wywołuje Laya.
Domyślny model oceniający to Qwen3:4b w lokalnej Ollama. Chroniony model generujący odpowiedzi jest konfigurowany niezależnie. Dokładny zakaz litery powinien używać reguły literalnej lub tekstowej; osąd modelu jest przybliżony. Zakresy i obsługę awarii opisują polityki.
Aby podłączyć zewnętrznego agenta, skieruj jego klienta modelu do endpointu zgodnego z OpenAI, a zarejestrowane operacje przez FastMCP. Bramka nie przechwytuje połączeń nadal kierowanych bezpośrednio do dostawców.