Spaces:
Running
Running
| # 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() | |