From f1747094aaf82ad7d9ffcbe711ba22ab2887b559 Mon Sep 17 00:00:00 2001 From: Danil Parunin 5f1b81b8-4f5d-11e8-9c2d-fa7ae01bbebc Date: Sat, 6 Dec 2025 14:55:06 +0300 Subject: [PATCH 01/10] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20?= =?UTF-8?q?=C2=AB/=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 2 ++ readme.md | Bin 0 -> 1024 bytes requirements.txt | 8 ++++++++ run.sh | 1 + 4 files changed, 11 insertions(+) create mode 100644 .env create mode 100644 requirements.txt create mode 100644 run.sh diff --git a/.env b/.env new file mode 100644 index 0000000..f1ae4dd --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +GIGACHAT_TOKEN=Y2ExOGEyYmQtNDk2ZS00NTAzLTg3OWMtYTczNTdhZjdjMzBlOjRhYTgxMTgxLTEwM2MtNDRhNC1iY2I0LWI4ZjBiZTg5NGUwMg== +GIGACHAT_BASE_URL=https://ngw.devices.sberbank.ru:9443/api/v2/oauth \ No newline at end of file diff --git a/readme.md b/readme.md index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..06d7405020018ddf3cacee90fd4af10487da3d20 100644 GIT binary patch literal 1024 ScmZQz7zLvtFd70QH3R?z00031 literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..6f80f07 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,8 @@ +fastapi>=0.115.0 +uvicorn[standard]>=0.30.0 +jinja2>=3.1.4 +pydantic>=2.9.0 +httpx>=0.27.0 +python-dotenv>=1.0.1 +cachetools>=5.3.0 +aiohttp>=3.9.0 \ No newline at end of file diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..ed610cc --- /dev/null +++ b/run.sh @@ -0,0 +1 @@ +uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload \ No newline at end of file From b496d672faef8740233c9ccdff136ca68edd12e2 Mon Sep 17 00:00:00 2001 From: Danil Parunin 5f1b81b8-4f5d-11e8-9c2d-fa7ae01bbebc Date: Sat, 6 Dec 2025 14:58:12 +0300 Subject: [PATCH 02/10] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20.env?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index f1ae4dd..0000000 --- a/.env +++ /dev/null @@ -1,2 +0,0 @@ -GIGACHAT_TOKEN=Y2ExOGEyYmQtNDk2ZS00NTAzLTg3OWMtYTczNTdhZjdjMzBlOjRhYTgxMTgxLTEwM2MtNDRhNC1iY2I0LWI4ZjBiZTg5NGUwMg== -GIGACHAT_BASE_URL=https://ngw.devices.sberbank.ru:9443/api/v2/oauth \ No newline at end of file From 32f57d9a22403105ac48424f0a814712bedb49a7 Mon Sep 17 00:00:00 2001 From: Danil Parunin 5f1b81b8-4f5d-11e8-9c2d-fa7ae01bbebc Date: Sat, 6 Dec 2025 14:58:53 +0300 Subject: [PATCH 03/10] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20?= =?UTF-8?q?=C2=AB/=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chat.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 chat.py diff --git a/chat.py b/chat.py new file mode 100644 index 0000000..cfec6cb --- /dev/null +++ b/chat.py @@ -0,0 +1,13 @@ +from fastapi import APIRouter, HTTPException +from app.models.schemas import ChatRequest, ChatResponse +from app.services.gigachat import call_gigachat + +router = APIRouter() + +@router.post("/chat", response_model=ChatResponse) +async def chat_endpoint(payload: ChatRequest): + try: + reply = await call_gigachat(payload.message, payload.agent.value) + return ChatResponse(reply=reply, agent_used=payload.agent.value) + except Exception as exc: + raise HTTPException(status_code=502, detail=f"GigaChat error: {str(exc)}") \ No newline at end of file From dfe2c34674d49afdefb199500a40251356fcf470 Mon Sep 17 00:00:00 2001 From: Danil Parunin 5f1b81b8-4f5d-11e8-9c2d-fa7ae01bbebc Date: Sat, 6 Dec 2025 15:04:56 +0300 Subject: [PATCH 04/10] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20?= =?UTF-8?q?=C2=AB/=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From af2033b2bdf61bbf539467a830b0ccc663b7c1da Mon Sep 17 00:00:00 2001 From: Danil Parunin 5f1b81b8-4f5d-11e8-9c2d-fa7ae01bbebc Date: Sat, 6 Dec 2025 15:05:12 +0300 Subject: [PATCH 05/10] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20?= =?UTF-8?q?=C2=AB/=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- schemas.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 schemas.py diff --git a/schemas.py b/schemas.py new file mode 100644 index 0000000..9754198 --- /dev/null +++ b/schemas.py @@ -0,0 +1,18 @@ +from enum import StrEnum +from pydantic import BaseModel, Field + +class AgentOption(StrEnum): + AUTO = "Авто" + LAWYER = "Юрист" + ECONOMIST = "Экономист" + WEB_DEVELOPER = "Web_developer" + ACCOUNTANT = "Бухгалтер" + PSYCHOLOGIST = "Психолог" + +class ChatRequest(BaseModel): + message: str = Field(..., min_length=1, max_length=4000) + agent: AgentOption = AgentOption.AUTO + +class ChatResponse(BaseModel): + reply: str + agent_used: str \ No newline at end of file From 3d2f387bae10ffc35db45304402bb62d8b8959c6 Mon Sep 17 00:00:00 2001 From: Danil Parunin 5f1b81b8-4f5d-11e8-9c2d-fa7ae01bbebc Date: Sat, 6 Dec 2025 15:06:45 +0300 Subject: [PATCH 06/10] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20chat.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chat.py | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 chat.py diff --git a/chat.py b/chat.py deleted file mode 100644 index cfec6cb..0000000 --- a/chat.py +++ /dev/null @@ -1,13 +0,0 @@ -from fastapi import APIRouter, HTTPException -from app.models.schemas import ChatRequest, ChatResponse -from app.services.gigachat import call_gigachat - -router = APIRouter() - -@router.post("/chat", response_model=ChatResponse) -async def chat_endpoint(payload: ChatRequest): - try: - reply = await call_gigachat(payload.message, payload.agent.value) - return ChatResponse(reply=reply, agent_used=payload.agent.value) - except Exception as exc: - raise HTTPException(status_code=502, detail=f"GigaChat error: {str(exc)}") \ No newline at end of file From 0c455c5b60bb649778b18d5bc90f8affceac8ada Mon Sep 17 00:00:00 2001 From: Danil Parunin 5f1b81b8-4f5d-11e8-9c2d-fa7ae01bbebc Date: Sat, 6 Dec 2025 15:06:55 +0300 Subject: [PATCH 07/10] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20readme.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | Bin 1024 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 readme.md diff --git a/readme.md b/readme.md deleted file mode 100644 index 06d7405020018ddf3cacee90fd4af10487da3d20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 ScmZQz7zLvtFd70QH3R?z00031 From 616a798ca6e90b83711c4670399563a15e2d209b Mon Sep 17 00:00:00 2001 From: Danil Parunin 5f1b81b8-4f5d-11e8-9c2d-fa7ae01bbebc Date: Sat, 6 Dec 2025 15:06:59 +0300 Subject: [PATCH 08/10] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20requirements.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 6f80f07..0000000 --- a/requirements.txt +++ /dev/null @@ -1,8 +0,0 @@ -fastapi>=0.115.0 -uvicorn[standard]>=0.30.0 -jinja2>=3.1.4 -pydantic>=2.9.0 -httpx>=0.27.0 -python-dotenv>=1.0.1 -cachetools>=5.3.0 -aiohttp>=3.9.0 \ No newline at end of file From 7ac5cdb1de76988a5685ff04a2d4a213d249a65d Mon Sep 17 00:00:00 2001 From: Danil Parunin 5f1b81b8-4f5d-11e8-9c2d-fa7ae01bbebc Date: Sat, 6 Dec 2025 15:07:04 +0300 Subject: [PATCH 09/10] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20run.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- run.sh | 1 - 1 file changed, 1 deletion(-) delete mode 100644 run.sh diff --git a/run.sh b/run.sh deleted file mode 100644 index ed610cc..0000000 --- a/run.sh +++ /dev/null @@ -1 +0,0 @@ -uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload \ No newline at end of file From d3b5ac3876843ffd3407f58e41377e273934cb9a Mon Sep 17 00:00:00 2001 From: Danil Parunin 5f1b81b8-4f5d-11e8-9c2d-fa7ae01bbebc Date: Sat, 6 Dec 2025 15:07:09 +0300 Subject: [PATCH 10/10] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20schemas.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- schemas.py | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 schemas.py diff --git a/schemas.py b/schemas.py deleted file mode 100644 index 9754198..0000000 --- a/schemas.py +++ /dev/null @@ -1,18 +0,0 @@ -from enum import StrEnum -from pydantic import BaseModel, Field - -class AgentOption(StrEnum): - AUTO = "Авто" - LAWYER = "Юрист" - ECONOMIST = "Экономист" - WEB_DEVELOPER = "Web_developer" - ACCOUNTANT = "Бухгалтер" - PSYCHOLOGIST = "Психолог" - -class ChatRequest(BaseModel): - message: str = Field(..., min_length=1, max_length=4000) - agent: AgentOption = AgentOption.AUTO - -class ChatResponse(BaseModel): - reply: str - agent_used: str \ No newline at end of file