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ę:
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 |
| Konkretna wersja modelu | Wybór konkretnej wersji modelu — przydatny gdy potrzebujesz powtarzalności lub testujesz różnicę między wersjami | Codzienne zadania — poziomy powyżej wystarczają |
Zaawansowana to poziom z wbudowanym reasoning (rozumowaniem — model najpierw myśli, dopiero potem odpowiada): 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.
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:
Najtańszy w wdrożeniu wzrost jakości to Instrukcje niestandardowe (Custom Instructions) — stały kontekst, który ChatGPT dokleja do każdej rozmowy. Ustawiasz raz, działa zawsze. Poniżej masz instrukcję krok po kroku: gdzie to znaleźć i co wpisać.
Krok 1. Kliknij swój awatar w lewym dolnym rogu i wybierz Personalizacja.
Krok 2. Otworzy się panel Personalizacja. Pole Instrukcje niestandardowe to miejsce na stały kontekst dotyczący stylu i zachowania. Niżej, w sekcji Informacje osobiste, ustawisz jak ChatGPT ma się do Ciebie zwracać, swój zawód oraz to, co model ma o Tobie wiedzieć.
Krok 3. Wpisz konkretne preferencje — im bardziej zwięźle i jednoznacznie, tym lepiej. Przykład:
Zmiany zapisują się automatycznie — od tej pory ChatGPT uwzględnia je w każdej nowej rozmowie.
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.
Uwaga — fragment dla osób technicznych i programistów. Akcje wymagają własnego API oraz podstaw REST/JSON. Jeśli nie programujesz, możesz spokojnie pominąć ten punkt — Instrukcje i Wiedza z wcześniejszych kroków pokrywają większość zastosowań.
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:

Schemat to po prostu instrukcja dla GPT: pod jakim adresem działa Twoje API, jakie operacje udostępnia i jakich danych wymaga każda z nich. Dlaczego akurat OpenAPI? Bo to standard, który opisuje API jednoznacznie — model odczytuje z niego, którą operację wywołać, pod jaki adres wysłać żądanie i co podstawić w miejsce parametru, zamiast zgadywać. Poniżej kompletny, minimalny schemat akcji „sprawdź status zamówienia po numerze" — wklejasz go w pole Schemat:
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
Co w tym schemacie jest wymagane i za co odpowiada:
To absolutne minimum. W prawdziwym wdrożeniu dochodzi jeszcze autoryzacja (np. klucz API) oraz dokładny opis struktury odpowiedzi, żeby GPT umiał odczytać i pokazać wynik.
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.
Uwaga — sekcja dla programistów. Klikalnego asystenta zbudujesz bez kodu: przez Akcje GPT z poprzedniego punktu albo narzędzia typu n8n. Kod pokazujemy z dwóch powodów: żebyś zobaczył, co naprawdę dzieje się pod maską, oraz dlatego, że prawdziwy, samodzielny agent — z własną logiką, integracjami i pełną kontrolą nad każdym krokiem — powstaje w kodzie. Jeśli nie programujesz, potraktuj ten fragment jak zaglądanie pod maskę i spokojnie przejdź dalej.
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})
Kod ma trzy części. (1) Narzędzia to zwykłe funkcje Pythona — tu status_zamowienia i zloz_reklamacje — które naprawdę coś robią: odpytują bazę, zapisują reklamację. (2) Opis narzędzi (tools) to ten sam pomysł co schemat OpenAPI z poprzedniego punktu — mówisz modelowi, jakie funkcje ma do dyspozycji i jakich argumentów wymagają. (3) Pętla agenta to sedno: model sam nie wykonuje funkcji — w każdej turze albo zwraca decyzję „wywołaj narzędzie X z takimi argumentami", albo gotową odpowiedź. Twój kod uruchamia wskazaną funkcję, dokleja jej wynik do rozmowy i wraca z tym do modelu. Pętla kręci się, aż model uzna, że ma komplet i nie potrzebuje już żadnego narzędzia.
Dlaczego pętla, a nie jedno wywołanie? Bo zadanie często wymaga kilku kroków po kolei — najpierw sprawdź status, a dopiero na jego podstawie złóż reklamację — i to model decyduje w locie, które narzędzie i w jakiej kolejności uruchomić. Na tym polega „agent": model planuje, Twój kod wykonuje, a wynik wraca do modelu.
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...