Первая проблема заключается в том, что пользовательский интерфейс Swagger в FastAPI показывает старый ответ:

Показанный выше пользовательский интерфейс Swagger обслуживается из URL-адреса Cloud Run /docs, а не из локального экземпляра FastAPI.
Команда CURL:
Код: Выделить всё
curl -X 'POST' \
'https://vci-188125714482.asia-south1.run.app/rag' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"query": "yo"
}'
Код: Выделить всё
https://vci-188125714482.asia-south1.run.app/ragКод: Выделить всё
{
"answer": "AI result for: yo"
}
Код: Выделить всё
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
content-length: 30
content-type: application/json
date: Mon,29 Dec 2025 11:33:43 GMT
server: Google Frontend
x-cloud-trace-context: 2b70f32dff26dc2279b45c2643b5f0b5;o=1
Код: Выделить всё
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from fastapi.responses import JSONResponse
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=False,
allow_methods=["*"], # MUST be *
allow_headers=["*"], # MUST be *
)
class Query(BaseModel):
query: str
@app.post("/rag")
async def rag(data: Query):
return {
"answer": f"You asked: {data.query}",
"sources": []
}
Структура репозитория выглядит следующим образом:
Код: Выделить всё
VCI/
├── main.py (old backend code)
├── vc-rag-backend/
│ ├── main.py (new backend code shown above)
│ ├── Dockerfile
│ └── requirements.txt
к /rag возвращает ответ 405, что приводит к ошибке CORS во внешнем интерфейсе:

Cloud Run развертывается через облако Триггер сборки, подключенный к GitHub. Триггер настроен на использование файла Dockerfile, но я не уверен, создается ли он из корня репозитория или из vc-rag-backend/.
Как устранить эти две проблемы?
Подробнее здесь: https://stackoverflow.com/questions/798 ... pi-backend
Мобильная версия