File size: 2,677 Bytes
afd56bc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 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()