# ruff: noqa: E402 import os import sys from dotenv import load_dotenv from unittest.mock import patch sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) load_dotenv() from agents.helpers import project_qa_agent from langchain_core.documents import Document class MockRetriever: def invoke(self, query): print(f"\n[MOCK Pół-RAG] Retriever wyłapuje zapytanie: {query}") return [ Document( page_content="Zasada DNSH (Do No Significant Harm) oznacza 'nie czyń znaczącej szkody'. Zgodnie z rozporządzeniem, dotacje z KPO (w tym FENG) nie mogą finansować projektów generujących istotną środowiskową szkodę. Przykładowo, systemy redukcji CO2 są wspierane jako pozytywny wkład, o ile proces ich produkcji nie zanieczyszcza nadmiernie wód.", metadata={ "source": "https://www.funduszeeuropejskie.gov.pl/dnsh-zasady" }, ), Document( page_content="W przypadku Ścieżki SMART należy wypełnić deklarację środowiskową. Zgodność z DNSH bada się w sześciu wymiarach środowiskowych. Jeśli tworzysz systemy ograniczające ślad węglowy, projekt kwalifikuje się bezpośrednio do modułu zazielenienia z minimalnym ryzykiem niezgodności, wymagana jest jednak inwentaryzacja.", metadata={"source": "https://parp.gov.pl/smart-przewodnik-2024"}, ), ] def main(): print("\n[RAG & AGENT TEST] Inicjalizacja sprawdzianu dla RAG...") question = "Proszę wyjaśnić kluczowe zasady dotyczące zasady DNSH (Do No Significant Harm) przy projektach z systemami optymalizacji CO2." print(f"\nZadaję pytanie do weryfikatora RAG:\nQ: {question}\n") try: with patch("agents.helpers.get_hybrid_retriever", return_value=MockRetriever()): res = project_qa_agent( project_id="test-mock-id", question=question, program_name="FENG (SMART)", context="Projekt dotyczy wdrożenia technologii redukcji CO2 w fabryce na Śląsku.", external_context=None, ) print("\n================== ODPOWIEDŹ Z RAG ==================") print(f"Odpowiedź: {res.get('answer', 'Brak')}") print(f"Źródła (Wykryte w bazie wektorowej): {res.get('sources', [])}") print(f"Rekomendacja: {res.get('recommendation', 'Brak')}") print("=====================================================\n") except Exception as e: print(f"Błąd podczas testu RAG: {e}") if __name__ == "__main__": main()