diff --git a/Dockerfile b/Dockerfile index 5af32eb..a6a1f1a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,8 +11,10 @@ RUN apt-get update && apt-get install -y \ COPY requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt +RUN pip install -r requirements.txt COPY . . +EXPOSE 8000 + ENTRYPOINT ["chainlit", "run", "app.py", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/README.md b/README.md index e69de29..ad0ee0d 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,109 @@ +# Právny AI Asistent – integrácia s API + +## POPIS + +Právny AI Asistent je inteligentný asistent integrovaný s oficiálnymi verejnými API Ministerstva spravodlivosti +Slovenskej republiky. Systém poskytuje užívateľom prístup k štruktúrovaným právnym informáciám prostredníctvom +prirodzeného jazyka. + +![PROFILE](public/img/project.png) + +**Hlavné funkcie:** +- Interpretácia užívateľských otázok v prirodzenom jazyku +- Automatická extrakcia a validácia parametrov +- Načítavanie dát výlučne cez oficiálne API +- Prezentácia výsledkov v zrozumiteľnom formáte v slovenskom jazyku + +## POUŽITÉ KNIŽNICE A TECHNOLÓGIE + +- **Python** – hlavný programovací jazyk +- **openai-agent** – tvorba AI agentov od OpenAI +- **httpx** – asynchrónna komunikácia s API +- **Chainlit** – framework pre chat rozhranie +- **Ollama** – lokálne používanie AI modelov +- **Docker** – kontajnerizácia aplikácie +- a **iné** + +## ŠTRUKTÚRA PROJEKTU +``` +ai-lawyer-agent/ +├── api/ # API logika +│ └── tools/ # API nástroje +│ ├── __init__.py +│ ├── fetch_api_data.py # Spracovanie API +│ └── schemas.py # Pydantic schémy +├── core/ +│ ├── __init__.py +│ ├── initialize_agent.py # Inicializácia AI agenta +│ ├── stream_response.py # Streamovanie odpovedí +│ └── system_prompt.py # Systémový prompt +├── public/ # Verejné zdroje +│ ├── icon/ # Ikony a logá +│ │ ├── favicon.png +│ │ ├── logo_dark.png +│ │ └── logo_light.png +│ ├── img/ +│ ├── styles.css # Štýly rozhrania +│ └── theme.json # Nastavenia témy +├── .chainlit/ # Markdown pre Chainlit +└── app.py # Hlavný súbor aplikácie (Сhainlit + spracovanie API) +``` + +## INŠTRUKCIA PRE INŠTALÁCIU + +### **Inštalácia cez Git** + +### 1. **Naklonovanie repozitára** + +```bash +git clone git@git.kemt.fei.tuke.sk:od059jr/ai-lawyer-agent.git +``` + +### 2. **Vytvorenie virtuálneho prostredia** + +#### Pre Windows +```bash +python -m venv venv + +venv\Scripts\activate +``` + +#### Pre macOS/Linux +``` +python3 -m venv venv + +source venv/bin/activate +``` + +### 3. **Inštalácia závislostí** +```bash +pip install -r requirements.txt +``` + +### 4. **Sťahovanie inštalátora Ollama** + +https://ollama.com/download + + +### 5. ** Sťahovanie modelov** + +```bash +ollama pull qwen3-next:80b-cloud +``` + +```bash +ollama pull gpt-oss:20b-cloud +``` + +```bash +ollama pull deepseek-v3.1:671b-cloud +``` + +### **Inštalácia cez DOCKER** + +### 1. Inštalácia Docker a Docker Desktop + +### 2. Nainštalujte a spustite aplikáciu + +https://hub.docker.com/r/alexgott0616/ai-lawyer-agent + diff --git a/core/initialize_agent.py b/core/initialize_agent.py index ee29c04..c4f34bf 100644 --- a/core/initialize_agent.py +++ b/core/initialize_agent.py @@ -1,3 +1,4 @@ +import os from agents import Agent, AgentHooks from agents import OpenAIChatCompletionsModel, AsyncOpenAI, ModelSettings from agents import set_tracing_disabled, enable_verbose_stdout_logging @@ -11,6 +12,8 @@ from api.tools.decisions import DecisionsAPI from api.tools.admin_proceedings import AdminProceedingsAPI from api.tools.civil_proceedings import CivilProceedingsAPI +ollama_host = os.getenv("OLLAMA_HOST", "host.docker.internal:11434") + set_tracing_disabled(True) enable_verbose_stdout_logging() @@ -29,7 +32,7 @@ def assistant_agent(model_name: str = "qwen3-next:80b-cloud") -> BaseAgent: admin_proceedings_api = AdminProceedingsAPI() civil_proceedings_api = CivilProceedingsAPI() - client = AsyncOpenAI(base_url="http://localhost:11434/v1", api_key="ollama") + client = AsyncOpenAI(base_url=f"http://{ollama_host}/v1", api_key="ollama") model = OpenAIChatCompletionsModel(model=model_name, openai_client=client) diff --git a/public/img/project.png b/public/img/project.png new file mode 100644 index 0000000..abe7b99 Binary files /dev/null and b/public/img/project.png differ diff --git a/requirements.txt b/requirements.txt index 11b245d..b042cd8 100644 Binary files a/requirements.txt and b/requirements.txt differ diff --git a/test/Examples_of_questions_old.pdf b/test/Examples_of_questions_old.pdf new file mode 100644 index 0000000..0920a55 Binary files /dev/null and b/test/Examples_of_questions_old.pdf differ