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