Jak stworzyłem własnego ChatGPT z pamięcią - analiza kodu i możliwości biznesowych
17 cze

Jak stworzyłem własnego ChatGPT z pamięcią – analiza kodu i możliwości biznesowych
Problem z większością chatbotów – dlaczego postanowiłem to zmienić
Pracując z różnymi narzędziami AI, zauważyłem frustrujący problem: większość chatbotów traktuje każde pytanie jako zupełnie nową konwersację. Pytasz o "ten projekt z poprzedniego tygodnia", a bot odpowiada: "O którym projekcie mówisz?".
Współczesne narzędzia, takie jak ChatGPT, radzą sobie z tym coraz lepiej, ale co jeśli chcesz zintegrować podobną funkcjonalność z własną aplikacją? Postanowiłem sprawdzić, jak trudno jest stworzyć narzędzie AI, które będzie pamiętać kontekst rozmowy.
Efekt? Działający chatbot z pamięcią... w zaledwie 50 linijkach kodu.
Architektura rozwiązania – prostota, która działa
Analizując najpopularniejsze rozwiązania AI, zauważyłem wspólny wzorzec: frontend + backend API + zarządzanie stanem. Zbudowałem więc własny system, bazując na tej logice, ale maksymalnie upraszczając całą architekturę.
Wybór technologii:
python Kopiuj Edytuj import streamlit as st from openai import OpenAI from dotenv import dotenv_values env = dotenv_values(".env") openai_client = OpenAI(api_key=env["OPENAI_API_KEY"]) st.title("NaszGPT z pamięcią")
- Streamlit – prostota i szybkość prototypowania. W data science liczy się szybkie testowanie konceptów, nie perfekcyjny UI.
- OpenAI API – dostęp do zaawansowanego silnika językowego. W odróżnieniu od prostych chatbotów, tutaj potrzebna była prawdziwa „inteligencja”.
- Python dotenv – bezpieczeństwo danych: klucze API nigdy nie powinny być zapisane na sztywno w kodzie.
Kluczowa innowacja – system pamięci konwersacji
Sercem rozwiązania jest funkcja zarządzająca pamięcią rozmowy:
python Kopiuj Edytuj def get_chatbot_reply(user_prompt, memory): messages = [ { "role": "system", "content": """ Jesteś pomocnikiem, który odpowiada na wszystkie pytania użytkownika. Odpowiadaj na pytania w sposób zwięzły i zrozumiały. """ }, ] for message in memory: messages.append({ "role": message["role"], "content": message["content"] }) messages.append({ "role": "user", "content": user_prompt }) response = openai_client.chat.completions.create( model="gpt-4o", messages=messages ) return { "role": "assistant", "content": response.choices[0].message.content, }
Kluczowy insight: OpenAI API nie ma wbudowanej pamięci – każdorazowo trzeba przesyłać pełną historię rozmowy, jeśli zależy nam na kontekście.
Dlaczego to działa lepiej?
Tradycyjny chatbot:
– "Jakie mamy plany marketingowe?"
– "Możesz doprecyzować?"
– "Te, o których rozmawialiśmy wcześniej."
– "Nie pamiętam."
Mój chatbot z pamięcią:
– "Jakie mamy plany marketingowe?"
– "Bazując na naszej wcześniejszej rozmowie..."
– "A co z budżetem?"
– "Wspomniałeś o 50 tys., przeanalizujmy to."
Zarządzanie stanem – pamięć, która przetrwa
python Kopiuj Edytuj if "messages" not in st.session_state: st.session_state["messages"] = [] for message in st.session_state["messages"]: with st.chat_message(message["role"]): st.markdown(message["content"]) prompt = st.chat_input("O co chcesz spytać?") if prompt: with st.chat_message("user"): st.markdown(prompt) st.session_state["messages"].append({ "role": "user", "content": prompt }) with st.chat_message("assistant"): chatbot_message = get_chatbot_reply( prompt, memory=st.session_state["messages"][-10:] ) st.markdown(chatbot_message["content"]) st.session_state["messages"].append(chatbot_message)
Dzięki session state, Streamlit przechowuje dane między interakcjami. W przeciwieństwie do większości chatbotów, moje rozwiązanie pamięta pełną sesję.
Optymalizacja pamięci – dlaczego akurat 10 wiadomości?
python Kopiuj Edytuj memory = st.session_state["messages"][-10:]
Problem: Przesyłanie całej historii rozmowy może przekraczać limity tokenów i podnosić koszty.
Rozwiązanie: Przechowujemy tylko ostatnie 10 wiadomości – to wystarczy, by zachować kontekst i jednocześnie kontrolować zużycie zasobów.
Praktyczne zastosowania w biznesie
- Customer Support z kontekstem:
- „Widzę, że kontaktowałeś się w sprawie faktury 12345. Czy problem został rozwiązany?”
- Asystent sprzedaży:
- „Pamiętam, że interesowałeś się pakietem Enterprise. Czy chciałbyś umówić demo?”
- Chatbot HR:
- „Ostatnio pytałeś o urlop w marcu. Sprawdźmy status Twojego wniosku.”
- Edukacyjny tutor:
- „Uczyliśmy się ostatnio funkcji w Pythonie. Dziś przejdziemy do klas – pamiętasz zmienne?”
Czego nauczyłem się, budując to narzędzie?
- Zacznij prosto, iteruj szybko.
- Prototyp 1: 20 linijek – bez pamięci
- Prototyp 2: dodany session state
- Prototyp 3: lepszy UI
- Prototyp 4: optymalizacja kontekstu
- Doświadczenie użytkownika ma znaczenie.
- – Responsywność i przejrzystość ważniejsze niż czysta wydajność.
- Optymalizacja kontekstu to klucz.
- – Testowałem różne długości historii (5, 10, 20 wiadomości) – 10 to „sweet spot”.
- System prompt engineering robi różnicę.
- – Zmiana promptu wpływa na jakość odpowiedzi.
- Standard: „Odpowiadaj na pytania”
- Ulepszony: „Bądź pomocny, zwięzły i zrozumiały”
- Biznesowy: „Dawaj praktyczne, eksperckie porady”
Analiza kosztów – realne liczby
- Średni koszt wiadomości: ~0,01 USD
- Użytkowanie miesięczne:
- Lekki użytkownik (50 wiadomości): ~0,50 USD
- Średni (200): ~2,00 USD
- Intensywny (500): ~5,00 USD
Wniosek: Rozwiązanie opłacalne nawet dla małych firm.
Pierwsze opinie użytkowników
- Freelancer graficzny: „W końcu chatbot, który pamięta moje preferencje!”
- Właściciel firmy: „Idealne do obsługi klienta – koniec z tłumaczeniem od nowa.”
- Manager HR: „Gdyby zintegrować to z systemem kadrowym – ogromna oszczędność czasu.”
Wspólny mianownik: każdy dostrzegł realną wartość płynącą z funkcji pamięci.
Porównanie z istniejącymi rozwiązaniami
- ChatGPT (web):
- Plusy: gotowe, silnik GPT-4o, łatwość użycia
- Minusy: brak integracji z aplikacją, brak pełnej kontroli
- No-code tools (Bubble, Zapier):
- Plusy: szybki start
- Minusy: ograniczona elastyczność, vendor lock-in, wysokie koszty
- Moje rozwiązanie:
- Pełna kontrola, elastyczność, niskie koszty
- Wymaga odrobiny znajomości kodu – ale to inwestycja, nie przeszkoda
Co dalej? Plan rozwoju
W krótkim terminie (1–2 miesiące):
- Lepsze zarządzanie pamięcią
- Lepszy UX (wskaźniki pisania, znaczniki czasu)
- Design mobilny
Średni termin (3–6 miesięcy):
- Integracja z CRM (HubSpot, Pipedrive)
- Możliwość przesyłania dokumentów i ich analizy
- Własna baza wiedzy
Długi termin (6+ miesięcy):
- Obsługa wielu użytkowników
- Dashboard analityczny
- Wersje branżowe (np. dla HR, sprzedaży, IT)
Dlaczego to ma znaczenie dla przyszłości AI?
Ten prosty chatbot pokazuje istotny trend: przechodzimy od narzędzi bez kontekstu do asystentów świadomych rozmowy.
Implikacje:
- Personalizacja na skalę masową
- Niższa bariera wejścia (50 linijek zamiast miesięcy developmentu)
- Kluczowa rola integracji – samodzielne aplikacje AI powoli tracą znaczenie
Co dalej?
Masz firmę i zastanawiasz się, jak wdrożyć to u siebie? Następny tekst będzie właśnie o tym – pokażę konkretne case study, analizę ROI oraz gotowy plan działania. A jeśli nie chcesz czekać, po prostu odezwij się już teraz. Pierwsza konsultacja jest bezpłatna – porozmawiamy o Twoich wyzwaniach, sprawdzimy potencjał automatyzacji i wspólnie ocenimy, co można usprawnić. Działam praktycznie, konkretnie i z nastawieniem na rezultat – jeśli szukasz partnera do wdrożenia AI w Twoim biznesie, jesteś w dobrym miejscu.
Zwiększ wydajność swojej firmy ze mną!
Odkryj oparte na doświadczeniu, innowacyjne rozwiązania. Zoptymalizuj swój biznes wdrażając agenta AI - nie czekaj...
Przeglądaj inne artykuły

Realtime API od OpenAI – rozmowa z AI w czasie rzeczywistym

Nowość w portfolio: Agent AI do obsługi Kalendarza Google

Pół roku w drodze do samego siebie

GPT‑5 w wielu wersjach? Co sugerują przecieki i dlaczego może to zmienić rynek AI