W erze prywatności i lokalnych środowisk developerskich coraz więcej osób sięga po modele językowe uruchamiane na własnym sprzęcie. Dzięki LangChain i Ollama możesz budować aplikacje z LLM bez OpenAI i internetu. W tym wpisie pokażę, jak połączyć te dwa narzędzia i odpalić własnego lokalnego chatbota.
Co to jest LangChain?
LangChain to framework w Pythonie (i JS), który pozwala szybko budować aplikacje z użyciem modeli językowych. Oferuje integracje z różnymi źródłami danych, narzędziami, pamięcią kontekstową i modelami — zarówno zdalnymi (OpenAI, Claude), jak i lokalnymi (np. Ollama).
Co to jest Ollama?
Ollama to lekki runtime do lokalnego uruchamiania LLM-ów takich jak LLaMA, Mistral, DeepSeek czy nasz polske Bielik lub PLLuM. Modele można pobrać jednym poleceniem (przykładowo Bielika):
$ ollama run hf.co/speakleash/Bielik-11B-v2.3-Instruct-GGUF:Q6_K
Po uruchomieniu nasłuchuje na http://localhost:11434, oferując REST API gotowe do integracji.
Co będzie nam potrzebne?
- Python 3.12
- Ollama (Wraz z wybranym przez nas modelem)
- Biblioteki pythona (LangChain)
$ pip install langchain langchain-community
Zróbmy sobie chat’a
Oto przykładowy kod używający model Pllum
from langchain_ollama import ChatOllama
from langchain.schema import SystemMessage, HumanMessage
from langchain_core.prompts import ChatPromptTemplate
# Inicjalizacja lokalnego modelu
llm = ChatOllama(model="hf.co/speakleash/Bielik-11B-v2.3-Instruct-GGUF:Q6_K", temperature=0)
# Prosty prompt z szablonem
prompt = ChatPromptTemplate.from_messages([
SystemMessage(content="Jesteś Adam i jesteś Botem AI, Mieszkasz w Krakowie."),
HumanMessage(content="{question}") # Pytanie użytkownika
])
messages = prompt.format_messages(question="Jak masz na imię?")
response = llm.invoke(messages)
print(response.content)
Jest to bardzo prosty przykład, brakuje w nim przykładowo pamięci! Nasz bot, nie będzie pamiętać nić pomiędzy kolejnymi promptami, ale możemy temu zaradzić tworząc prostą pamięć:
from langchain_ollama import ChatOllama
from langchain.schema import SystemMessage, HumanMessage, AIMessage
# Inicjalizacja modelu
llm = ChatOllama(model="hf.co/speakleash/Bielik-11B-v2.3-Instruct-GGUF:Q6_K", temperature=0)
# Historia konwersacji
chat_history = [
SystemMessage(content="Jesteś Adam i jesteś Botem AI, Mieszkasz w Krakowie.")
]
# Funkcja obsługująca kolejne zapytania
def chat_with_memory(question: str):
# Dodaj wiadomość użytkownika
chat_history.append(HumanMessage(content=question))
# Odpowiedź od modelu na podstawie całej historii
response = llm.invoke(chat_history)
# Dodaj odpowiedź modelu do historii
chat_history.append(AIMessage(content=response.content))
return response.content
# Przykład użycia
print(chat_with_memory("Jak masz na imię?"))
print(chat_with_memory("Gdzie mieszkasz?"))
print(chat_with_memory("O co Cię pytałem na początku?"))
Co możemy zrobić z tym dalej?
LangChain + Ollama to potężne połączenie, które pozwala stworzyć wiele ciekawych rozwiązań.
- możesz tworzyć lokalnych agentów
- analizować dokumenty (np. zapisane w bazie wektorowej)
- tworzyć własne narzędzia które będą rozszerzały możliwości Twojego bota
Photo by Nathan Van de Graaf on Unsplash
