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.
Verktygsanrop är en AI-modellfunktion som gör att du kan beskriva tillgängliga verktyg för en AI-modell så att modellen kan begära att programmet anropar dem. Verktyg kan vara .NET-metoder, anrop till externa API:er, interaktioner med MCP-servrar (Model Context Protocol) eller andra körbara åtgärder. I stället för att köra dessa verktyg direkt returnerar modellen ett strukturerat utdata som beskriver vilka verktyg som ska anropas och med vilka argument. Ditt program anropar dessa verktyg och skickar tillbaka resultaten till modellen så att det kan skapa ett mer exakt och grundat svar.
Microsoft.Extensions.AI (MEAI) tillhandahåller leverantörsoberoende abstraktioner för verktygsanrop som fungerar i olika AI-tjänster, inklusive Azure OpenAI, OpenAI, Ollama och andra. Du skriver logiken för verktygsanrop en gång och den fungerar oavsett vilken underliggande modell eller leverantör du använder.
Varför använda verktygsanrop
Verktygsanrop förenklar hur du ansluter externa verktyg till AI-modeller. Du beskriver varje verktyg för modellen som en del av konversationen. Modellen bestämmer sedan vilka verktyg som ska anropas baserat på användarens fråga. När programmet anropar de begärda verktygen och returnerar resultaten använder modellen dessa resultat för att skapa ett mer fullständigt och korrekt svar.
Vanliga användningsfall för verktygsanrop är:
- Besvara frågor genom att anropa externa API:er. Du kan till exempel kontrollera väderprognosen eller skicka e-post.
- Hämtar information från interna datalager. Du kan till exempel aggregera försäljningsdata för att svara" Vad är mina mest sålda produkter?"
- Skapa strukturerade data från ostrukturerad text. Du kan till exempel skapa en användarprofil från chatthistoriken.
Anropa AI-funktioner i MEAI
Det allmänna flödet för att anropa AI-funktioner med IChatClient är:
Definiera .NET-metoder som funktioner och konfigurera dem på en ChatOptions instans.
Skicka användarens meddelande till modellen. Modellen bestämmer vilka funktioner, om några, som ska anropas. Den returnerar ett strukturerat svar som visar funktionsanropen och deras argument.
Note
Modeller kan hallucinera argument som inte beskrevs i funktionsdefinitionerna.
Parsa modellens svar och anropa de begärda funktionerna med de angivna argumenten.
Skicka en annan begäran som innehåller funktionsresultatet som nya meddelanden i konversationshistoriken.
Modellen svarar med fler begäranden om funktionsanrop eller ett slutligt svar på användarens fråga. Fortsätt att anropa begärda funktioner tills modellen ger ett slutligt svar.
MEAI hanterar steg 3 till och med 5 automatiskt, så du behöver inte hantera anropsloopen FunctionInvokingChatClient själv.
Nyckeltyper
MEAI tillhandahåller följande typer för att stödja funktionsanrop:
- AIFunction: Representerar en funktion som kan beskrivas för en AI-modell och anropas. Det här är kärnabstraktionen för en funktion i MEAI.
-
AIFunctionFactory: Tillhandahåller fabriksmetoder för att skapa
AIFunction-instanser från .NET metoder. AnvändAIFunctionFactoryför att omsluta befintliga metoder som funktioner utan att skriva standardbeskrivning eller kod för argumenttolkning. -
FunctionInvokingChatClient: Omsluter alla
IChatClientoch lägger till funktioner för automatisk funktionsanrop. När modellen begär ett funktionsanropFunctionInvokingChatClientanropar motsvarandeAIFunction, samlar in resultatet och fortsätter konversationen – allt transparent.
Parallell funktionsanrop
Vissa modeller stöder parallella funktionsanrop, där modellen begär flera funktionsanrop i ett enda svar. Programmet anropar varje funktion och returnerar alla resultat tillsammans i ett uppföljningsmeddelande. Parallell funktionsanrop minskar antalet turer till modellen, vilket minskar svarstiden och API-användningen.
FunctionInvokingChatClient stöder parallell funktionsanrop automatiskt.
Stöd för flera leverantörer
En av de viktigaste fördelarna med att använda MEAI för funktionsanrop är providerns oberoende. Typerna AIFunction, AIFunctionFactoryoch FunctionInvokingChatClient fungerar med alla IChatClient implementeringar, inklusive:
- Azure OpenAI
- OpenAI
- Ollama
- Alla andra leverantörer som implementerar
IChatClient
Eftersom stöd för funktionsanrop varierar mellan modeller och leverantörer kontrollerar du leverantörens dokumentation för att bekräfta om en specifik modell stöder funktionsanrop eller parallella funktionsanrop.
Tokenöverväganden
Verktygsbeskrivningar ingår i begäran som skickas till modellen och räknas mot modellens tokengräns. Det innebär att verktygsdefinitioner bidrar till både tokenförbrukning och begärandekostnad.
Om din begäran närmar sig modellens tokengräns bör du överväga följande justeringar:
- Minska antalet registrerade verktyg för konversationen.
- Förkorta de metodnamn och beskrivningar som används för att generera verktygsdefinitioner.
- Begränsa verktygsregistreringen till endast de verktyg som är relevanta för en viss konversationskontext.