A LangChain Managed Deep Agents ügynökei már személyenként kezelik a hozzáféréseket

A LangChain Managed Deep Agents rendszerébe megérkezett a Connections funkció, amely a hitelesítő adatokat a LangSmith-munkaterületen kezeli, és szükség esetén minden felhasználóhoz külön hozzáférést rendel. A megoldás a Managed Deep Agents v0.7.0 vagy újabb verzióiban érhető el.
- A Connections a LangSmith-munkaterületen tárolja a hitelesítő adatokat.
- Az ügynökhöz rendelt titkot minden hívó közösen használhatja.
- A felhasználói OAuth-hozzáférések személyenként, futás közben oldódnak fel.
- Az engedélyezési folyamatnál nincs szükség saját callback útvonalra vagy tokentárolóra.
- A funkció a Managed Deep Agents v0.7.0 vagy újabb verzióiban érhető el.
A hitelesítő adatok kikerülnek a projektből
A Connections egy névvel ellátott hitelesítő adat a LangSmith-munkaterületen. Az ügynökök futás közben, egy slug alapján kérik le az értéket a connections.get() hívással. A kulcs így nem kerül be a projekt .env fájljába vagy a buildbe, a hozzáférés pedig kódmódosítás és újratelepítés nélkül cserélhető vagy visszavonható.
A LangChain két, egymástól független tulajdonság mentén rendezi a kapcsolatokat. Az egyik a tulajdonos, amely lehet maga az ügynök vagy az őt használó személy. A másik a hitelesítés típusa, amely statikus titok vagy OAuth-engedély lehet. A kapcsolat tulajdonosa a létrehozáskor rögzül az mda connections create paranccsal, a connections.get() pedig csak a már létező hitelesítő adatokat választja ki.
Az ügynökhöz tartozó statikus titok akkor használható, ha minden hívónak ugyanazt a képességet kell elérnie. A LangChain példája a Tavily webes keresője. A TAVILY_API_KEY értéke a LangSmith-munkaterületre kerül, és a későbbi ügynökkérések automatikusan az új kulcsot használják, ha a kezelő lecseréli a tárolt titkot.
Minden felhasználó a saját GitHub-hozzáférését használhatja
A felhasználóhoz rendelt kapcsolatnál a hitelesítés futás közben, az adott személyhez kötve történik. A LangChain GitHub-példájában a fejlesztő saját OAuth-alkalmazásának kliensazonosítóját és titkát adja meg, a szükséges hatókör pedig a repo. A GitHub a Connections katalógusban szerepel 22 másik szolgáltatás mellett, de a rendszer olyan OAuth-szolgáltatókat is kezel, amelyekhez a fejlesztő maga adja meg a metaadatokat.
Az ügynök a connections.get("github-issues", {"type": "user"}) hívással kéri le a hozzáférési tokent. Ha a felhasználó még nem engedélyezte a GitHub-hozzáférést, vagy a tokenje lejárt, a futás megszakad, engedélykérést jelenít meg, majd a jóváhagyás után onnan folytatódik, ahol megállt. A fejlesztőnek ehhez nem kell visszahívási útvonalat, tokentárolót, frissítési logikát vagy saját hozzájárulási képernyőt készítenie.
Ennek gyakorlati következménye, hogy ugyanaz a keresés eltérő eredményt adhat attól függően, melyik felhasználó indítja. A privát repozitóriumok láthatósága személyenként változhat. Ha az ügynök hibajegyet nyit, az a GitHubban a kérés kezdeményezőjének nevével jelenik meg, nem egy bot fiókjával.
MCP-szolgáltatóknál még kevesebb beállítás kell
Bizonyos MCP-szerverek maguk regisztrálják az OAuth-klienst. Ilyenkor a kapcsolat létrehozásához elég a szerver URL-je, például a Linear MCP-szerverének címe. Nincs szükség kliensazonosítóra, kliensszerver-titokra vagy külön hatókörre, mert a szerver OAuth-metaadatai alapján történik a beállítás, a kapcsolat pedig olvasási és írási jogosultságot egyeztet.
A LangChain szerint a GitHubhoz hasonló, saját alkalmazást igénylő kapcsolat és az MCP-szolgáltatóval létrehozott kapcsolat eltérő beállításokat használ, de a kódban ugyanaz a hozzáférési segéd működik. Az MCP-eszközök esetében a fejlesztőnek az eszközök implementációját sem kell külön megírnia, azok a szerverről érkeznek.
Elérhetőség és fejlesztői használat
A Connections a Managed Deep Agents előzetes kiadásában érhető el, a funkciókészletet pedig a telepített bináris verziója határozza meg. A katalógus az mda connections catalog paranccsal listázható, a létrehozott kapcsolatok pedig az mda connections list paranccsal ellenőrizhetők.
A LangChain leírása szerint egy kapcsolat használatához létre kell hozni azt, a kódban a connections.get() segítségével kell lekérni, majd az ezt olvasó kódot telepíteni kell. A helyi fejlesztés is támogatott. Az ügynökhöz tartozó kapcsolatok az MDA_DEV_<SLUG> változóból oldódnak fel, a felhasználói kapcsolatok pedig a bejelentkezett fejlesztőhöz kötődnek, így helyben is megjelenhet az engedélykérés.
A megoldás a közös szolgáltatáskulcsok és a személyes hozzáférések közötti különbséget a konfiguráció és az ügynökkód szintjén is kezeli. A felhasználóknak nem kell belépniük a LangSmithbe az engedélyezéshez, az ügynök pedig ugyanazzal a telepítéssel és ugyanazzal a kapcsolatnévvel dolgozhat eltérő személyek eltérő jogosultságaival.


