Documentația LangChain 1.x definește agentul ca un model care apelează unelte într-o buclă până când sarcina e gata. create_agent din langchain.agents construiește această buclă și întoarce un graf LangGraph compilat (CompiledStateGraph). Agentul are deci invoke, stream, stream_events și checkpointing și poate fi pus ca nod într-un StateGraph. În LangGraph v1, create_agent a înlocuit create_react_agent din langgraph.prebuilt.
model primește un string "furnizor:model" sau un model deja inițializat. tools primește funcții cu type hints și docstring, unelte create cu @tool sau dicționare pentru uneltele native ale furnizorului. system_prompt primește un string sau un SystemMessage. Starea implicită are cheia messages, iar invoke întoarce starea finală.
Pentru conversații pe mai multe ture, agentul primește un checkpointer, iar fiecare apel un thread_id. Datele fixe ale unei rulări (ID-ul utilizatorului, setări) se dau prin context=, cu forma declarată în context_schema, și se citesc în unelte și middleware din runtime.context. Restul comportamentului (rezumarea istoricului, aprobare umană, reîncercări, limite) se adaugă prin middleware.
Concepte cheie și caracteristici
| Concept / Parametru | Descriere practică |
|---|---|
model |
String "furnizor:model" (de exemplu "openai:gpt-6-astra") sau un BaseChatModel. Un model legat dinainte cu bind_tools() nu mai este acceptat. |
tools |
Listă de unelte @tool, funcții cu type hints și docstring sau dicționare pentru uneltele furnizorului. Nu mai acceptă un ToolNode. |
system_prompt |
Instrucțiunile de sistem, ca string sau SystemMessage. Prompturile care se schimbă la rulare se fac cu middleware-ul @dynamic_prompt. |
response_format |
Schema pentru ieșire structurată (Pydantic, TypedDict, dataclass) sau o strategie ToolStrategy / ProviderStrategy. Rezultatul apare în cheia structured_response. |
checkpointer / store |
Persistența LangGraph: checkpointer-ul ține istoricul unui fir (thread_id), store-ul ține date între fire. |
context_schema |
Tipul datelor date prin context= la invoke / stream. |
state_schema |
Stare extinsă, doar ca TypedDict derivat din langchain.agents.AgentState. Documentația preferă definirea stării în middleware. |
middleware |
Listă de middleware care rulează înainte, după sau în jurul apelurilor de model și de unelte. |
name |
Numele agentului; util când agentul devine subgraf într-un sistem multi-agent. |
Exemple practice și scenarii reale
Exemplul 1: Agent cu o unealtă
După exemplul din documentație; o funcție simplă cu type hints și docstring poate fi dată direct ca unealtă.
from langchain.agents import create_agent
def vremea(oras: str) -> str:
"""Returnează vremea pentru un oraș."""
return f"În {oras} este senin." # date de test
agent = create_agent(
model="openai:gpt-6-astra",
tools=[vremea],
system_prompt="Ești un asistent util.",
)
rez = agent.invoke({"messages": [{"role": "user", "content": "Cum e vremea la Iași?"}]})
print(rez["messages"][-1].text)
Exemplul 2: Conversație cu memorie și context per rulare
from dataclasses import dataclass
from langchain.agents import create_agent
from langgraph.checkpoint.memory import InMemorySaver
@dataclass
class Context:
user_id: str
agent = create_agent(
model="openai:gpt-6-astra",
tools=[],
context_schema=Context,
checkpointer=InMemorySaver(),
)
config = {"configurable": {"thread_id": "conversatie-1"}}
agent.invoke({"messages": [{"role": "user", "content": "Mă numesc Ana."}]},
config=config, context=Context(user_id="u-123"))
rez = agent.invoke({"messages": [{"role": "user", "content": "Cum mă cheamă?"}]},
config=config, context=Context(user_id="u-123"))
Exemplul 3: Ieșire structurată din agent
from pydantic import BaseModel
from langchain.agents import create_agent
class Raspuns(BaseModel):
rezumat: str
incredere: float
agent = create_agent(model="openai:gpt-6-astra", tools=[], response_format=Raspuns)
rez = agent.invoke({"messages": [{"role": "user", "content": "Rezumă: ..."}]})
print(rez["structured_response"])
Greșeli frecvente și capcane
- Să dai agentului un model legat cu
bind_tools().create_agentnu îl acceptă; uneltele se dau întools. - Să definești starea agentului cu Pydantic sau dataclass.
create_agentacceptă doarTypedDict, derivat dinAgentState; validarea se face în middleware. - Să trimiți
thread_idfără checkpointer. Fărăcheckpointer(local, de exempluInMemorySaver()), agentul nu păstrează nimic între apeluri.
Întrebări & Exemple practice:
create_agent: agenți în LangChain 1.xAi o întrebare despre create_agent: agenți în LangChain 1.x sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.