From caf6bd1d62630c50c45409e39b89a0a6866c7be2 Mon Sep 17 00:00:00 2001 From: MakarGon Date: Sat, 25 Jan 2025 21:56:45 +0300 Subject: [PATCH] feat: chat caching via X-Session-ID --- src/gigachat/api/post_chat.py | 2 +- src/gigachat/api/utils.py | 5 +++-- src/gigachat/models/chat.py | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gigachat/api/post_chat.py b/src/gigachat/api/post_chat.py index cb340e7..07353e5 100644 --- a/src/gigachat/api/post_chat.py +++ b/src/gigachat/api/post_chat.py @@ -13,7 +13,7 @@ def _get_kwargs( chat: Chat, access_token: Optional[str] = None, ) -> Dict[str, Any]: - headers = build_headers(access_token) + headers = build_headers(access_token, chat.session_id) return { "method": "POST", diff --git a/src/gigachat/api/utils.py b/src/gigachat/api/utils.py index f3b5ef3..06c7dab 100644 --- a/src/gigachat/api/utils.py +++ b/src/gigachat/api/utils.py @@ -16,7 +16,7 @@ USER_AGENT = "GigaChat-python-lib" -def build_headers(access_token: Optional[str] = None) -> Dict[str, str]: +def build_headers(access_token: Optional[str] = None, session_id: Optional[str] = None) -> Dict[str, str]: headers = {} if access_token: @@ -25,7 +25,8 @@ def build_headers(access_token: Optional[str] = None) -> Dict[str, str]: headers["User-Agent"] = USER_AGENT authorization = authorization_cvar.get() - session_id = session_id_cvar.get() + if session_id is None: + session_id = session_id_cvar.get() request_id = request_id_cvar.get() service_id = service_id_cvar.get() operation_id = operation_id_cvar.get() diff --git a/src/gigachat/models/chat.py b/src/gigachat/models/chat.py index fd154ba..0d4c66f 100644 --- a/src/gigachat/models/chat.py +++ b/src/gigachat/models/chat.py @@ -35,3 +35,5 @@ class Chat(BaseModel): """Набор функций, которые могут быть вызваны моделью""" flags: Optional[List[str]] = None """Флаги, включающие особенные фичи""" + session_id: Optional[str] = None + """Идентификатор сессии для кэширования X-Session-ID"""