ai-forever / ai-forever/langchain-gigachat

Структурированный ответ не формируется, если использовать GigaChat в качестве агента.

Aperta
#39 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
50
Fork
13
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

При попытке использовать 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
```

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Reproduce the supplied create_react_agent example with the listed GigaChat, LangChain, and LangGraph versions. Start around langchain_core/runnables/base.py:3045 and compare the AIMessage content produced by GigaChat with ChatOpenAI. Done means response['structured_response'] contains a StructuredOutput value instead of None.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
api
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.