diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 981298f..1f4d330 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -1,5 +1,5 @@ import os -from pydantic import BaseSettings +from pydantic_settings import BaseSettings class Settings(BaseSettings): diff --git a/backend/app/services/embeddings.py b/backend/app/services/embeddings.py index 316f682..ec5cfdd 100644 --- a/backend/app/services/embeddings.py +++ b/backend/app/services/embeddings.py @@ -1,17 +1,20 @@ -import google.generativeai as genai +from google import genai from typing import List from app.core.config import settings -genai.configure(api_key=settings.GEMINI_API_KEY) - def embed_texts(texts: List[str]) -> List[List[float]]: + client = genai.Client(api_key=settings.GEMINI_API_KEY) embeddings = [] + for text in texts: - result = genai.embed_content( - model="models/embedding-001", - content=text, - task_type="retrieval_document" + result = client.models.embed_content( + model="text-embedding-004", + contents=text, ) - embeddings.append(result["embedding"]) + if hasattr(result, 'embeddings') and result.embeddings: + embeddings.append(result.embeddings[0].values) + elif hasattr(result, 'embedding'): + embeddings.append(result.embedding.values) + return embeddings diff --git a/backend/app/services/generator.py b/backend/app/services/generator.py index bb236e6..d95a99b 100644 --- a/backend/app/services/generator.py +++ b/backend/app/services/generator.py @@ -1,8 +1,6 @@ -import google.generativeai as genai +from google import genai from app.core.config import settings -genai.configure(api_key=settings.GEMINI_API_KEY) - def generate_answer(context: str, question: str) -> str: prompt = f""" @@ -17,6 +15,9 @@ def generate_answer(context: str, question: str) -> str: {question} """ - model = genai.GenerativeModel("gemini-1.5-flash") - response = model.generate_content(prompt) - return response.text.strip() + client = genai.Client(api_key=settings.GEMINI_API_KEY) + response = client.models.generate_content( + model="gemini-2.5-flash", + contents=prompt + ) + return response.text diff --git a/backend/app/services/loader.py b/backend/app/services/loader.py index 6c615a7..02212ae 100644 --- a/backend/app/services/loader.py +++ b/backend/app/services/loader.py @@ -1,5 +1,6 @@ from pathlib import Path -from PyPDF2 import PdfReader +from pypdf import PdfReader + def load_text_from_pdf(file_path: Path) -> str: diff --git a/backend/requirements.txt b/backend/requirements.txt index f606e0e..9110852 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,18 +1,14 @@ fastapi>=0.109.0 uvicorn>=0.27.0 + pydantic>=2.6.0 pydantic-settings>=2.1.0 python-dotenv>=1.0.1 -langchain>=0.1.0 -langchain-openai>=0.0.5 -langchain-google-genai>=0.0.5 -faiss-cpu>=1.7.4 + python-multipart>=0.0.7 -aiofiles>=23.2.1 httpx>=0.26.0 beautifulsoup4>=4.12.3 -mypy>=1.8.0 -black>=24.1.0 -isort>=5.13.2 -flake8>=7.0.0 -pytest>=8.0.0 +pypdf>=4.0.0 + +faiss-cpu>=1.7.4 +google-genai>=1.0.0