Narzędzia użytkownika

Narzędzia witryny


fedora:aplikacje:ollama

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
fedora:aplikacje:ollama [2026/10/30 21:23] – [Agent testowy] sindapfedora:aplikacje:ollama [2026/11/09 21:25] (aktualna) – [Ollama w Podman] sindap
Linia 78: Linia 78:
 python test_agent.py python test_agent.py
 </code> </code>
 +
 +==== Agent bazujący na treści z konkretnego pliku pdf ====
 +
 +<code python agent_chat.py >
 +from langchain_ollama import ChatOllama, OllamaEmbeddings
 +from langchain_core.messages import HumanMessage
 +from langchain_community.document_loaders import PyPDFLoader
 +from langchain_text_splitters import RecursiveCharacterTextSplitter
 +from langchain_chroma import Chroma
 +import os
 +
 +pdf_path = "pdf/bialy montaz elektryczny.pdf"
 +
 +if not os.path.exists(pdf_path):
 +    print(f"Błąd: Nie znaleziono pliku {pdf_path}!")
 +    exit()
 +
 +print("--- INICJALIZACJA AGENTA ---")
 +print(f"1. Ładowanie pliku PDF ({pdf_path})...")
 +loader = PyPDFLoader(pdf_path)
 +docs = loader.load()
 +
 +print(f"2. Dzielenie dokumentu ({len(docs)} stron) na fragmenty...")
 +text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
 +splits = text_splitter.split_documents(docs)
 +
 +print("3. Tworzenie lokalnej bazy wektorowej (to może chwilę potrwać)...")
 +embeddings = OllamaEmbeddings(model="qwen2.5-coder:7b")
 +vectorstore = Chroma.from_documents(documents=splits, embedding=embeddings)
 +retriever = vectorstore.as_retriever()
 +
 +llm = ChatOllama(model="qwen2.5-coder:7b")
 +
 +print("\nGotowe! Agent jest gotowy do rozmowy.")
 +print("Wpisz swoje pytanie do dokumentu (lub wpisz 'exit', aby zakończyć).\n")
 +
 +# Pętla konwersacji
 +while True:
 +    try:
 +        pytanie = input("Ty: ")
 +        if not pytanie.strip():
 +            continue
 +        if pytanie.lower() in ["exit", "wyjscie", "koniec", "q"]:
 +            print("Do zobaczenia!")
 +            break
 +
 +        # Szukamy fragmentów pasujących do pytania
 +        relevant_docs = retriever.invoke(pytanie)
 +        kontekst = "\n\n".join([doc.page_content for doc in relevant_docs])
 +
 +        # Tworzymy prompt dla modelu
 +        prompt = f"""Odpowiedz na pytanie bazując WYŁĄCZNIE na poniższym fragmencie dokumentu PDF. 
 +Jeśli nie masz tej informacji w tekście, napisz, że jej nie znasz.
 +
 +Tekst z dokumentu PDF:
 +{kontekst}
 +
 +Pytanie: {pytanie}
 +"""
 +
 +        response = llm.invoke([HumanMessage(content=prompt)])
 +        print(f"\nAgent: {response.content}\n" + "-"*40)
 +
 +    except KeyboardInterrupt:
 +        print("\nDo zobaczenia!")
 +        break
 +</code>
 +
  
 ==== Agent bazujący na treści z plików pdf z podkatalogu pdf ==== ==== Agent bazujący na treści z plików pdf z podkatalogu pdf ====
Linia 173: Linia 241:
 </code> </code>
  
 +===== Ollama w Podman =====
  
 +<code bash>
 +sudo dnf install -y nvidia-container-toolkit
 +sudo mkdir -p /etc/cdi
 +sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
 +</code>
 +
 +<code bash>
 +nvidia-ctk cdi list
 +INFO[0000] Found 3 CDI devices                          
 +nvidia.com/gpu=0
 +nvidia.com/gpu=GPU-f7c3e57b-e151-f70d-85ed-1727440608be
 +nvidia.com/gpu=all
 +</code>
 +
 +<code bash>
 +podman run --rm --security-opt=label=disable --device=nvidia.com/gpu=all docker.io/nvidia/cuda:13.0.0-base-ubuntu24.04 nvidia-smi
 +</code>
 +
 +<code bash>
 +podman run -d --name ollama --device=nvidia.com/gpu=all --security-opt=label=disable -p 127.0.0.1:11434:11434 -v "$HOME/.ollama:/root/.ollama" docker.io/ollama/ollama:latest
 +</code>
 +
 +<code bash>
 +podman exec -it ollama ollama list
 +NAME                                          ID              SIZE      MODIFIED      
 +SpeakLeash/bielik-11b-v2.3-instruct:Q4_K_M    b0dc93a20fdb    6.7 GB    3 weeks ago      
 +qwen:latest                                   46be3b9ea9a0    4.7 GB    5 weeks ago      
 +qwen2.5-coder:7b                              dae161e27b0e    4.7 GB    5 weeks ago      
 +deepseek-coder:6.7b                           ce298d984115    3.8 GB    11 months ago    
 +llama3:8b                                     365c0bd3c000    4.7 GB    11 months ago    
 +deepseek-coder:1.3b                           3ddd2d3fc8d2    776 MB    11 months ago
 +</code>
 +
 +<code bash>
 +podman exec -it ollama ollama run deepseek-coder:1.3b
 +</code>
 +
 +Jeżeli rozmiar modelu jest mniejszy niż rozmiar pamięci GPU to model korzysta z GPU.
 +<code bash>
 +podman exec ollama ollama ps
 +NAME                   ID              SIZE      PROCESSOR    CONTEXT    RUNNER      UNTIL              
 +deepseek-coder:1.3b    3ddd2d3fc8d2    1.6 GB    100% GPU     4096       llamacpp    3 minutes from now 
 +</code>
 +
 +Przy większych modelach obliczenia są realizowane przez GPU i CPU
 +<code bash>
 +podman exec ollama ollama ps
 +NAME                                          ID              SIZE      PROCESSOR          CONTEXT    RUNNER      UNTIL              
 +SpeakLeash/bielik-11b-v2.3-instruct:Q4_K_M    b0dc93a20fdb    4.0 GB    32%/68% CPU/GPU    4096       llamacpp    4 minutes from now
 +</code>
fedora/aplikacje/ollama.1793391781.txt.gz · ostatnio zmienione: przez sindap

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki