Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Zdecydowana większość osób używa ChatGPT jak gadającej wyszukiwarki: wpisz pytanie, przeczytaj akapit, zamknij kartę. To tak, jakby kupić samochód i jeździć nim wyłącznie na pierwszym biegu. Pod maską jest cała maszyneria, której nigdy nie odpalają - personalizacja działająca w tle, projekty trzymające kontekst, własne wersje asystenta z dostępem do firmowych danych, a na końcu pełnoprawni agenci, którzy sami wykonują wieloetapowe zadania.
Ten artykuł jest mapą od pierwszego biegu do ostatniego. Zaczynamy od rzeczy, które ustawisz w pięć minut i poczujesz różnicę tego samego dnia, a kończymy na budowie własnego agenta AI z działającym kodem w Pythonie. Bez lania wody - konkretne ustawienia, gotowe szablony i przykłady, które możesz skopiować.
Z tego artykułu dowiesz się:
Spis treści
Pierwsza decyzja w każdej rozmowie to wybór poziomu AI - rozwijane menu obok pola wpisywania. W ChatGPT (stan na 2026) masz cztery opcje:
| Poziom AI | Do czego | Kiedy NIE używać |
|---|---|---|
| Błyskawiczny | Przeredagowanie, streszczenie, krótka odpowiedź, burza mózgów - odpowiada natychmiast | Zadania wieloetapowe z logiką - da płytki wynik |
| Średni | Dłuższe teksty, tłumaczenia, strukturyzowanie treści - balans między szybkością a jakością | Proste jedno-zdaniowe pytania - Błyskawiczny wystarczy |
| Zaawansowana | Analiza, debugowanie, decyzje z wieloma warunkami, planowanie - model sam sprawdza własne wnioski (reasoning) | Proste pytania - tracisz czas, model „dłubie" w oczywistości |
| GPT-5.5 (5.5 / 5.4 / 5.3 / o3) | Wybór konkretnej wersji modelu - przydatny gdy potrzebujesz powtarzalności lub testujesz różnicę między wersjami | Codzienne zadania - poziomy powyżej wystarczają |
Oddzielnie od poziomu AI działają narzędzia, które możesz włączyć w trakcie rozmowy: wyszukiwanie w sieci (świeże fakty), analiza danych / interpreter kodu (pliki Excel/CSV, wykresy), generowanie obrazów. To nie są „tryby" - to dodatkowe możliwości dostępne niezależnie od wybranego poziomu. Włączasz je klikając + lub ikonkę narzędzi na pasku pod polem wpisywania:
Zaawansowana to poziom z wbudowanym reasoning: model przed odpowiedzią wykonuje ukryty etap planowania - rozbija problem na kroki i sprawdza własne wnioski. Płacisz za to czasem (odpowiedź przychodzi wolniej), więc opłaca się tylko tam, gdzie problem faktycznie ma więcej niż jeden ruch.
Najtańszy w wdrożeniu wzrost jakości to Custom Instructions - stały kontekst, który ChatGPT dokleja do każdej rozmowy. Ustawiasz raz, działa zawsze. Znajdziesz to w ustawieniach konta, w sekcji personalizacji. Są tam dwa pola: kim jesteś i jak chcesz, żeby model odpowiadał.
Większość ludzi zostawia te pola puste, a to właśnie tutaj kończą się odpowiedzi „dla wszystkich i dla nikogo". Oto wzorzec, który możesz dopasować pod siebie:
# Pole 1: Co model powinien o mnie wiedzieć
Jestem analitykiem w firmie produkcyjnej. Pracuję w Excelu i SQL.
Odbiorcy moich materiałów to zarząd - cenią konkret i liczby, nie żargon.
Pracuję po polsku, raporty bywają po angielsku.
# Pole 2: Jak model ma odpowiadać
- Zaczynaj od wniosku, potem uzasadnienie. Bez długich wstępów.
- Gdy podajesz dane, dawaj je w tabeli.
- Jeśli czegoś nie wiesz lub brakuje danych - powiedz wprost, nie zgaduj.
- Kod komentuj po polsku. Pokazuj gotowe do uruchomienia fragmenty.
- Nie używaj emotikon ani frazesów typu "świetne pytanie".
Druga warstwa to pamięć - ChatGPT potrafi sam zapamiętywać fakty z rozmów (że pracujesz w danym stosie technologicznym, że wolisz konkretny format). Warto co jakiś czas zajrzeć do listy zapamiętanych rzeczy i usunąć to, co nieaktualne, bo przeterminowana „pamięć" potrafi cicho psuć odpowiedzi.
Mocny prompt to nie zaklęcie, tylko dobrze opisane zlecenie. Ma kilka części, które warto świadomie wypełniać. Im więcej z nich podasz, tym mniej model zgaduje.
Few-shot (dosłownie „kilka strzałów") to technika, w której zamiast opisywać oczekiwany wynik, po prostu go pokazujesz na 1-2 przykładach. Model wyłapuje wzorzec lepiej niż z najdłuższej instrukcji.
# Zamiast: "klasyfikuj zgłoszenia klientów"
# Daj wzorzec - model dopasuje resztę:
Klasyfikuj zgłoszenie jako: REKLAMACJA / PYTANIE / POCHWAŁA.
Przykłady:
"Paczka przyszła zgnieciona" -> REKLAMACJA
"Czy macie to w rozmiarze L?" -> PYTANIE
"Super obsługa, polecam!" -> POCHWAŁA
Zgłoszenie: "Minęły dwa tygodnie i nadal nie dostałem zwrotu" ->
Chain-of-thought („łańcuch myśli") to poproszenie modelu, by rozpisał kroki, zanim poda wynik. Przy zadaniach z logiką albo liczeniem to wyraźnie zmniejsza liczbę błędów - model nie skacze od razu do odpowiedzi.
Rozwiąż krok po kroku, pokazując rozumowanie, a na końcu
podaj wynik w osobnej linii zaczynającej się od "WYNIK:".
Firma ma 3 magazyny. Magazyn A wysyła 40% zamówień, B - 35%,
reszta z C. Dziś było 1 250 zamówień. Ile wysłał magazyn C?
Jedna z najmocniejszych sztuczek: poproś ChatGPT, żeby najpierw poprawił Twoje polecenie, a dopiero potem je wykonał. Działa, bo model „wie", czego mu brakuje, by dobrze odpowiedzieć.
Zanim wykonasz zadanie, zadaj mi do 3 pytań, które najbardziej
zmienią jakość Twojej odpowiedzi. Potem przepisz moje polecenie
w lepszej wersji i dopiero wtedy je wykonaj.
Zadanie: napisz ofertę szkolenia dla działu HR.
Projekty to foldery na rozmowy, które dzielą wspólny kontekst: zestaw instrukcji i wgrane pliki obowiązujące w każdej rozmowie wewnątrz projektu. To rozwiązuje najczęstszy ból - powtarzanie tła w kółko.
Przykład: projekt „Raport miesięczny". Wrzucasz do niego szablon raportu, definicje wskaźników i instrukcję „pisz w tonie dla zarządu, liczby w tabelach". Od tej pory każda rozmowa w tym projekcie startuje z tą wiedzą - nie tłumaczysz po raz dziesiąty, co znaczy „marża pierwszego rzędu" w Waszej firmie.
| Mechanizm | Zasięg | Najlepsze do |
|---|---|---|
| Custom Instructions | całe konto, każda rozmowa | Twój styl, rola, język |
| Pamięć | całe konto, automatycznie | fakty o Tobie, preferencje |
| Projekt | rozmowy w danym folderze | jedno zadanie, własne pliki i zasady |
| Własny GPT | oddzielny asystent, do udostępnienia | powtarzalny proces dla zespołu |
Własny GPT to skonfigurowana wersja ChatGPT z własną nazwą, instrukcjami, plikami wiedzy i opcjonalnie akcjami. Budujesz go w GPT Builderze, opisując słowami - nie trzeba programować. Efekt to asystent, którego odpalasz jednym kliknięciem i udostępniasz zespołowi.
Tak wygląda GPT z perspektywy odbiorcy — przykład pytania w zakresie regulaminu i gotowa odpowiedź:
GPT pilnuje też swojego zakresu — gdy pytasz o coś spoza regulaminu, grzecznie odmawia:
Sercem GPT są instrukcje. Traktuj je jak opis stanowiska pracy nowego pracownika - im precyzyjniej, tym mniej niespodzianek. Wzorzec dla GPT „Asystent ofert handlowych":
ROLA
Jesteś asystentem działu handlowego firmy szkoleniowej. Pomagasz
przygotować spersonalizowane oferty na podstawie cennika z Wiedzy.
ZASADY
- Zawsze pytaj o: branżę klienta, liczbę uczestników, tryb (online/stacjonarnie).
- Ceny bierz WYŁĄCZNIE z pliku cennik.pdf. Nie zgaduj kwot.
- Przy grupach 5+ osób przypomnij o rabacie grupowym.
- Jeśli klient pyta o temat spoza oferty - powiedz to wprost i zaproponuj
najbliższy dostępny kurs.
FORMAT ODPOWIEDZI
1. Krótkie podsumowanie potrzeby klienta (2 zdania).
2. Tabela: kurs | liczba dni | cena netto | termin.
3. Akapit z uzasadnieniem doboru.
4. Wezwanie do działania z linkiem do zapisu.
CZEGO NIE ROBIĆ
- Nie obiecuj terminów, których nie ma w pliku terminy.csv.
- Nie podawaj cen brutto - rozmawiamy w kwotach netto B2B.
Akcje (Actions) to most między GPT a światem zewnętrznym. Dzięki nim GPT może w trakcie rozmowy wywołać Twój system: sprawdzić stan zamówienia, dopisać lead do CRM, pobrać dostępność terminów. GPT opisujesz w GPT Builderze, a akcję - schematem OpenAPI (standardowy, czytelny dla maszyn opis tego, co Twoje API potrafi). Na razie pomijasz ten krok — wróć tu gdy Twój GPT z Wiedzą już działa i chcesz go podłączyć do prawdziwego systemu.
W edytorze GPT kliknij Skonfiguruj, przewiń na dół do sekcji Działania i kliknij Utwórz nowe działanie:
Otworzy się formularz Dodaj działania. W polu Schemat wklejasz opis swojego API w formacie OpenAPI:
Minimalny schemat akcji „sprawdź status zamówienia po numerze" — wklejasz go w to pole:
openapi: 3.1.0
info:
title: API sklepu
version: "1.0.0"
servers:
- url: https://api.twojsklep.pl
paths:
/zamowienia/{numer}:
get:
operationId: pobierzStatusZamowienia
summary: Zwraca status zamówienia po jego numerze
parameters:
- name: numer
in: path
required: true
schema: { type: string }
responses:
"200":
description: Status zamówienia
Po wklejeniu GPT Builder automatycznie parsuje schemat i pokazuje dostępne działania z przyciskiem Testuj — możesz od razu sprawdzić, czy wywołanie działa:
Gdy użytkownik napisze „gdzie jest moja paczka numer 8841?", GPT rozpozna intencję, wywoła pobierzStatusZamowienia z numerem 8841, odczyta odpowiedź API i ujmie ją w naturalnym zdaniu. To pierwszy moment, w którym GPT przestaje tylko „mówić", a zaczyna działać - i naturalny pomost do tematu agentów.
Tu kończy się przeglądarka, a zaczyna automatyzacja. Różnica jest prosta, ale fundamentalna:
| Własny GPT | Agent AI | |
|---|---|---|
| Gdzie działa | w ChatGPT, w przeglądarce | jako program (serwer, skrypt, n8n) |
| Kto inicjuje | człowiek, każdą wiadomością | zdarzenie, harmonogram lub cel |
| Pętla | jedna tura: pytanie --> odpowiedź | wiele tur: myśl --> narzędzie --> wynik --> powtórz |
| Autonomia | czeka na Ciebie | sam decyduje o kolejnych krokach |
Agent działa w pętli: dostaje cel, model decyduje jakie narzędzie wywołać, program je wykonuje, oddaje wynik modelowi, a ten albo wywołuje kolejne narzędzie, albo uznaje zadanie za skończone i zwraca odpowiedź. Ten cykl to clou agenta.
Najpierw pokażmy, co naprawdę dzieje się pod spodem, na czystym kliencie OpenAI. Model nie wykonuje funkcji sam - zwraca informację „chcę wywołać funkcję X z takimi argumentami", a Twój kod ją uruchamia i oddaje wynik. Oto kompletna, działająca pętla obsługi reklamacji:
import json
from openai import OpenAI
client = OpenAI() # klucz API z zmiennej środowiskowej OPENAI_API_KEY
# --- 1. Narzędzia, które agent może wywołać (tu: uproszczone) ---
def status_zamowienia(numer):
baza = {"8841": "wysłane, kurier DPD, doręczenie jutro"}
return baza.get(numer, "nie znaleziono zamówienia")
def zloz_reklamacje(numer, powod):
# w realnym systemie: zapis do bazy / CRM
return f"reklamacja dla {numer} przyjęta, numer zgłoszenia R-2026-117"
dostepne = {"status_zamowienia": status_zamowienia,
"zloz_reklamacje": zloz_reklamacje}
# --- 2. Opis narzędzi dla modelu (schemat) ---
tools = [
{"type": "function", "function": {
"name": "status_zamowienia",
"description": "Zwraca status zamówienia po numerze",
"parameters": {"type": "object",
"properties": {"numer": {"type": "string"}},
"required": ["numer"]}}},
{"type": "function", "function": {
"name": "zloz_reklamacje",
"description": "Składa reklamację dla zamówienia",
"parameters": {"type": "object",
"properties": {"numer": {"type": "string"},
"powod": {"type": "string"}},
"required": ["numer", "powod"]}}},
]
messages = [
{"role": "system", "content": "Jesteś agentem BOK. Działaj po polsku."},
{"role": "user", "content": "Zamówienie 8841 nie dotarło. Chcę reklamację."},
]
# --- 3. Pętla agenta ---
while True:
odp = client.chat.completions.create(
model="gpt-4o", messages=messages, tools=tools)
msg = odp.choices[0].message
messages.append(msg)
if not msg.tool_calls: # model nie chce już nic wywoływać
print(msg.content) # to finalna odpowiedź
break
for call in msg.tool_calls: # wykonaj to, o co prosi model
nazwa = call.function.name
args = json.loads(call.function.arguments)
wynik = dostepne[nazwa](**args)
messages.append({"role": "tool",
"tool_call_id": call.id, "content": wynik})
Przykładowy przebieg pokazuje, jak agent sam łączy dwa kroki - najpierw sprawdza status, potem zakłada reklamację - zanim odpowie człowiekowi:
[tura 1] model -> wywołaj status_zamowienia(numer="8841")
[narzędzie] "wysłane, kurier DPD, doręczenie jutro"
[tura 2] model -> wywołaj zloz_reklamacje(numer="8841", powod="opóźnienie")
[narzędzie] "reklamacja przyjęta, numer R-2026-117"
[tura 3] model -> Sprawdziłem - paczka jest u kuriera DPD z dostawą jutro.
Na wszelki wypadek złożyłem reklamację (R-2026-117).
Pętlę z poprzedniego przykładu pisaliśmy ręcznie, żeby pokazać mechanizm. W praktyce sięga się po bibliotekę, która tę pętlę prowadzi za Ciebie. W oficjalnym Agents SDK od OpenAI ten sam agent to kilkanaście linii:
import asyncio
from agents import Agent, Runner, function_tool
@function_tool
def status_zamowienia(numer: str) -> str:
"""Zwraca status zamówienia po numerze."""
return {"8841": "wysłane, DPD, jutro"}.get(numer, "brak")
@function_tool
def zloz_reklamacje(numer: str, powod: str) -> str:
"""Składa reklamację dla zamówienia."""
return f"reklamacja {numer} przyjęta (R-2026-117)"
agent = Agent(
name="Agent BOK",
instructions="Jesteś agentem obsługi klienta. Działaj po polsku.",
tools=[status_zamowienia, zloz_reklamacje],
)
async def main():
wynik = await Runner.run(agent,
"Zamówienie 8841 nie dotarło, chcę reklamację.")
print(wynik.final_output)
asyncio.run(main())
Dekorator @function_tool sam buduje schemat narzędzia z podpowiedzi typów i opisu funkcji, a Runner.run prowadzi całą pętlę - wywołania, wyniki, kolejne tury - aż do finalnej odpowiedzi. To jest właśnie ta sama pętla z diagramu, tylko schowana w bibliotece.
Jeśli wynik ma trafić do innego systemu, nie chcesz akapitu tekstu, tylko czysty, przewidywalny format. Model można zmusić, by zwracał dane zgodne z zadanym schematem - tu prosi się go o ustrukturyzowany obiekt zamiast swobodnej wypowiedzi:
from pydantic import BaseModel
from openai import OpenAI
class Zgloszenie(BaseModel):
kategoria: str # REKLAMACJA / PYTANIE / POCHWAŁA
pilnosc: int # 1-5
streszczenie: str
client = OpenAI()
odp = client.chat.completions.parse(
model="gpt-4o",
messages=[{"role": "user",
"content": "Czekam 2 tygodnie na zwrot pieniędzy i nikt nie odpisuje!"}],
response_format=Zgloszenie,
)
z = odp.choices[0].message.parsed
print(z.kategoria, z.pilnosc) # -> REKLAMACJA 5
Dzięki temu odpowiedź modelu wpada prosto do bazy albo kolejnego kroku procesu - bez parsowania tekstu i bez niespodzianek z formatem.
| Sytuacja | Sięgnij po |
|---|---|
| Codzienna praca z tekstem, jednorazowe zadania | Prompty + Custom Instructions |
| Powracające zadanie z własnymi plikami (raport, oferta) | Projekt |
| Powtarzalny proces, który ma obsługiwać cały zespół | Własny GPT (+ akcje, gdy sięga do systemów) |
| Zadanie ma się wykonywać samo, bez człowieka w każdym kroku | Agent AI (kod lub n8n) |
Jeśli Twój cel to budowa własnych asystentów dla zespołu, naturalnym kolejnym krokiem jest kurs Tworzenie agentów AI:
Dla osób, które chcą po prostu sprawniej pracować z AI na co dzień:
Własny GPT to skonfigurowana wersja ChatGPT z instrukcjami, plikami wiedzy i opcjonalnie akcjami - działa w przeglądarce i czeka na Twoje wiadomości. Agent AI to program, który sam prowadzi pętlę: dostaje cel, decyduje jakie narzędzia wywołać, wykonuje je, czyta wyniki i powtarza, aż osiągnie cel. GPT to interfejs, agent to autonomiczny proces.
Nie. Sam GPT konfigurujesz słowami w GPT Builderze i wgrywając pliki. Kod robi się potrzebny dopiero przy akcjach (opis API schematem OpenAPI) oraz przy budowie pełnoprawnego agenta przez API.
Błyskawiczny - do prostych, dobrze zdefiniowanych zadań (przeredagowanie, streszczenie, krótka odpowiedź). Zaawansowana - przy zadaniach wieloetapowych: analiza danych, debugowanie, decyzje z wieloma warunkami, dłuższe wyprowadzenia logiczne. Płacisz za to wolniejszą odpowiedzią.
Pliki wiedzy są dostępne dla osób, którym udostępnisz GPT, a fragmenty mogą trafić do odpowiedzi. Nie wgrywaj tam tajemnic firmy ani danych osobowych bez podstawy prawnej. Dla wrażliwych danych użyj konta zespołowego lub własnego systemu przez API z kontrolą dostępu.
Komentarze (0)
Brak komentarzy...