17 cze
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.
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ę.
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ą")
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.
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."
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ę.
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.
Wniosek: Rozwiązanie opłacalne nawet dla małych firm.
Wspólny mianownik: każdy dostrzegł realną wartość płynącą z funkcji pamięci.
W krótkim terminie (1–2 miesiące):
Średni termin (3–6 miesięcy):
Długi termin (6+ miesięcy):
Ten prosty chatbot pokazuje istotny trend: przechodzimy od narzędzi bez kontekstu do asystentów świadomych rozmowy.
Implikacje:
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.