create_agent: agenți în LangChain 1.x în LangChain & LangGraph

Funcția din langchain.agents care creează un agent: un model care apelează unelte într-o buclă până termină sarcina, configurat cu prompt, unelte și middleware.

Sintaxă & invocare Python
from langchain.agents import create_agent

agent = create_agent(
    model="openai:gpt-6-astra",
    tools=[vremea],
    system_prompt="Ești un asistent util. Răspunzi concis.",
)
rez = agent.invoke({"messages": [{"role": "user", "content": "Cum e vremea la Iași?"}]})
print(rez["messages"][-1].text)

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_agent nu îl acceptă; uneltele se dau în tools.
  • Să definești starea agentului cu Pydantic sau dataclass. create_agent acceptă doar TypedDict, derivat din AgentState; validarea se face în middleware.
  • Să trimiți thread_id fără checkpointer. Fără checkpointer (local, de exemplu InMemorySaver()), agentul nu păstrează nimic între apeluri.

Noțiuni și module înrudite

Învață AI • Comunitate & Q&A

Întrebări & Exemple practice: create_agent: agenți în LangChain 1.x

Ai 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.

Comunitate AI Adaugă o întrebare sau distribuie un cod / prompt

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.