Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aplikace můžou používat modely z různých služeb odvozování pro různá otočení konverzace. Aplikace může například měnit modely na základě volby uživatele, možností modelu, dostupnosti nebo nákladů.
Změna cíle pro další požadavek je pouze jednou částí směrování. Nový model také potřebuje předchozí konverzaci, aby pokračoval ve stejném kontextu. Určuje, jestli může tento kontext přijímat, závisí na tom, kde je uložená historie chatu a kdo ho řídí.
Úložiště historie chatu určuje přenositelnost
Inferenční služby podporují různé přístupy ke stavu konverzace. Některá rozhraní API očekávají, že volající poskytne relevantní historii zpráv při každém požadavku. Ostatní rozhraní API ukládají konverzaci do služby odvození a umožňují volajícímu pokračovat předáním identifikátoru.
| Historie modelu | Kde jsou zprávy uložené | Co volající pošle |
|---|---|---|
| Spravováno volajícím | V paměti řízené aplikací nebo odolném úložišti | Relevantní historie zpráv a všechny nové zprávy s každou žádostí |
| Inference spravovaná službou | V úložišti řízeném službou inferencí | Identifikátor konverzace nebo odpovědi specifické pro službu a všechny nové zprávy. |
Některé služby odvozování podporují oba přístupy prostřednictvím různých rozhraní API nebo možností. Například rozhraní Responses od OpenAI má parametr store, který můžete nastavit na true pro historii chatu spravovanou službou pro odvozování a na false pro historii chatu spravovanou volajícím.
Historie spravovaná volajícím podporuje směrování
Když volající spravuje historii, má přístup ke zprávám z předchozích výměn. Směrovač může vybrat jiný model nebo službu odvozování a volající může tyto zprávy odeslat s dalším požadavkem.
Historii není nutné uchovávat v paměti procesu. Může pocházet z odolného úložiště vlastněného aplikací, pokud ji aplikace může načíst a odeslat do vybrané služby. Cíl musí také podporovat obsah zprávy a funkce použité dříve v konverzaci.
Směrování limitů historie spravovaných službou inference
Když služba odvozování spravuje historii, je zdrojem pravdy pro konverzaci. Volající obvykle uchovává neprůzný identifikátor místo samotných zpráv.
Tento identifikátor odkazuje na stav uchovávaný původní službou. Access může také záviset na účtu nebo projektu, koncovém bodu a přihlašovacích údajích použitých k vytvoření konverzace. Klient pro jinou službu nemůže k načtení zpráv použít identifikátor. Jiný klient pro stejnou službu také nemusí mít přístup ke konverzaci, pokud používá jiný rozsah.
Služba může podporovat změny modelů v rámci jedné z vlastních uložených konverzací. Toto chování je specifické pro danou službu a nejedná se o přenositelné směrování. Obecný směrovač nemůže přenést konverzaci na straně služby jinému poskytovateli, aniž by nejprve načítá nebo rekonstruuje zprávy.
| Scénář směrování | Historie modelu | Result |
|---|---|---|
| Přepínání mezi modely od jednoho poskytovatele | Spravováno volajícím | Volající může historii znovu přehrát novému modelu. Nový model musí podporovat typy zpráv a obsahu použité v předchozích krocích. |
| Přepínání mezi různými poskytovateli odvození | Spravováno volajícím | Volající může novému poskytovateli znovu přehrát historii. Nový poskytovatel musí přijmout role, typy obsahu, zprávy volání nástrojů a zprávy výsledků nástrojů použité v předchozích krocích. |
| Změna modelů v rámci jedné konverzace na straně služby | Inference spravovaná službou | Přepínač funguje jenom v případě, že služba odvozování umožňuje stávající konverzaci pokračovat s novým modelem. Klient směrování nemůže toto chování povolit. |
| Přepnutí na jinou službu odvození | Inference spravovaná službou | Nová služba nemá přístup k identifikátoru konverzace původní služby. Načtěte nebo rekonstruujte zprávy a zahajte novou trasu s historií spravovanou volajícím. |
Další informace o těchto modelech úložiště najdete v tématu Úložiště.
Jak agent Framework implementuje směrování za běhu
Agent Framework může poskytovat historii, kterou spravuje volající a která je potřebná pro přenositelné směrování. V tomto vzoru směrování je poskytovatel historie chatu zdrojem pravdy pro konverzaci. Může ukládat zprávy v rámci relace agenta nebo v úložišti spravovaném aplikací.
V rozhraní Agent Framework obsahuje historie spravovaná volajícím stav místní relace a vlastní úložiště historie chatu. Historie spravovaná inferenční službou odpovídá úložišti spravovanému službou.
Pro ChatClientAgent je klient pro směrování chatu umístěn ve vrstvě klienta chatu v pipeline agenta. Agent i jeho relace zůstávají stejné, zatímco směrovací klient pro každý požadavek vybere jednu z několika pojmenovaných instancí IChatClient.
Směrovaný požadavek se řídí tímto pořadím:
- Poskytovatel historie chatu načte historii konverzací.
- Agent kombinuje historii se vstupem pro aktuální turn.
- Směrovací klient vybere aktivního klienta chatu pro relaci.
- Vybraný klient obdrží kompletní požadavek.
- Poskytovatel historie chatu ukládá nové zprávy po spuštění.
Vzhledem k tomu, že vybraný klient obdrží historii načtenou poskytovatelem, může aplikace změnit trasy bez ručního opětovného sestavení konverzace.
Sada SDK pro .NET poskytuje experimentální RoutePersistingRoutingChatClient. Pomocí RoutePersistingRoutingChatClientOptions.DefaultRoute nastavte počáteční trasu, pomocí GetActiveRoute zkontrolujte trasu relace a pomocí SetActiveRoute ji změňte. Pokud nenastavíte výchozí trasu, klient použije první trasu poskytnutou při konstrukci.
V Microsoft.Extensions.AI existuje více směrovacích klientů, kteří umožňují další strategie směrování.
Kompletní implementaci jazyka C# najdete v ukázce směrování s více modely .
Important
Každý klient chatu registrovaný jako cesta musí používat historii spravovanou volajícím, kterou dodává poskytovatel historie chatu. Poskytovatel může tuto historii uložit v relaci nebo v úložišti aplikace. Neregistrujte cestu, která používá historii konverzace spravovanou službou pro odvozování.
Python podpora není aktuálně dostupná.
Podpora pro Go není aktuálně k dispozici.