-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
При попытке использовать GigaChat в качестве агента со структурированным форматом вывода вместо структурированного вывода возвращается None.
Код, который запускаю:
import os
from typing import Annotated, Literal
from langchain_gigachat import GigaChat
from langgraph.prebuilt import create_react_agent
from pydantic import BaseModel, Field
class StructuredOutput(BaseModel):
"""
Structured output of the model.
"""
final_answer: str = Field(..., description="final response")
def get_temperature(
country: Annotated[Literal["Russia", "USA"], "country to get temperature from"],
) -> float:
"""
Returns current temperature in degrees of celsius.
"""
temperatures = {"Russia": 36.6, "USA": 31}
return temperatures[country]
llm = GigaChat(
credentials=os.getenv("GIGACHAT_API_KEY"),
verify_ssl_certs=False,
model="GigaChat-2-Max",
)
prompt = "Отвечай вежливо"
agent = create_react_agent(
llm,
[get_temperature],
prompt=prompt,
response_format=StructuredOutput
)
user = input("User: ")
response = agent.invoke({"messages": [{"role": "user", "content": user}]})
print(response["structured_response"])
Вывод:
User: как дела?
None
Если вместо GigaChat использовать ChatOpenAI из библиотеки langchain_openai в точно таком-же коде, структурированный ответ возвращается как следует.
Отследил проблему до строчки 3045 модуля langchain_core\runnables\base.py
. В случае использования ChatOpenAI в input_
возвращается ответ в JSON-формате, GigaChat в свою очередь на на этой строчке выдаёт AIMessage в свободном формате content.
Библиотеки:
annotated-types==0.7.0
anyio==4.9.0
certifi==2025.7.14
charset-normalizer==3.4.2
colorama==0.4.6
distro==1.9.0
gigachat==0.1.41
h11==0.16.0
httpcore==1.0.9
httpx==0.28.1
idna==3.10
jiter==0.10.0
jsonpatch==1.33
jsonpointer==3.0.0
langchain-core==0.3.69
langchain-gigachat==0.3.11
langchain-openai==0.3.28
langgraph==0.5.3
langgraph-checkpoint==2.1.0
langgraph-prebuilt==0.5.2
langgraph-sdk==0.1.73
langsmith==0.4.6
openai==1.96.1
orjson==3.11.0
ormsgpack==1.10.0
packaging==25.0
pydantic==2.11.7
pydantic-core==2.33.2
pyyaml==6.0.2
regex==2024.11.6
requests==2.32.4
requests-toolbelt==1.0.0
sniffio==1.3.1
tenacity==9.1.2
tiktoken==0.9.0
tqdm==4.67.1
types-requests==2.32.4.20250611
typing-extensions==4.14.1
typing-inspection==0.4.1
urllib3==2.5.0
xxhash==3.5.0
zstandard==0.23.0
Metadata
Metadata
Assignees
Labels
No labels