Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Skopiuj ten plik jako .env i uzupełnij swój klucz API OpenAI
OPENAI_API_KEY=sk-...twój_klucz_tutaj...
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,6 @@ htmlcov/
# OS files
.DS_Store
Thumbs.db

# Environment variables (secrets)
.env
3 changes: 3 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,7 @@ RUN apt-get update \
&& apt-get install -y --no-install-recommends git ca-certificates \
&& rm -rf /var/lib/apt/lists/*

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

CMD ["bash"]
38 changes: 34 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,33 @@
# Repozytorium Bazowe

To repozytorium zawiera podstawową konfigurację startową:
- `.gitignore` dla typowych plików lokalnych i cache narzędzi.
To repozytorium zawiera podstawową konfigurację startową wraz z połączeniem do OpenAI ChatGPT API:
- `.gitignore` dla typowych plików lokalnych, cache narzędzi i pliku `.env`.
- `.env.example` — szablon zmiennych środowiskowych (skopiuj jako `.env` i uzupełnij klucz API).
- `Dockerfile` do uruchamiania środowiska roboczego w kontenerze.
- `.dockerignore` ograniczający kontekst buildu obrazu.
- `requirements.txt` z zależnościami (`openai`, `python-dotenv`).
- `chat.py` — prosty klient ChatGPT w trybie konwersacji.
Comment on lines +8 to +9

## Konfiguracja klucza API OpenAI

1. Skopiuj plik przykładowy:
```bash
cp .env.example .env
```
2. Otwórz `.env` i wstaw swój klucz API:
```
OPENAI_API_KEY=sk-...twój_prawdziwy_klucz...
```
Klucz możesz wygenerować na stronie: https://platform.openai.com/api-keys

> **Uwaga:** plik `.env` jest dodany do `.gitignore` — nie zostanie przypadkowo opublikowany w repozytorium.

## Uruchomienie czatu (lokalnie)

```bash
pip install -r requirements.txt
python chat.py
```

## Uruchomienie kontenera

Expand All @@ -13,10 +37,16 @@ Zbuduj obraz:
docker build -t codex-workspace .
```

Uruchom kontener:
Uruchom kontener przekazując plik `.env`:

```bash
docker run --rm -it --env-file .env -v "$(pwd):/workspace" codex-workspace
```

Następnie w kontenerze:

```bash
docker run --rm -it -v "$(pwd):/workspace" codex-workspace
python chat.py
```

## Klonowanie zewnętrznego repozytorium (opcjonalnie)
Expand Down
56 changes: 56 additions & 0 deletions chat.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
"""
Prosty klient ChatGPT korzystający z OpenAI API.

Użycie:
python chat.py

Wymagania:
- Plik .env z ustawionym OPENAI_API_KEY (patrz .env.example)
- Zainstalowane zależności: pip install -r requirements.txt
"""

import os
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()

api_key = os.getenv("OPENAI_API_KEY")
if not api_key:
raise EnvironmentError(
"Brak klucza API. Ustaw OPENAI_API_KEY w pliku .env (patrz .env.example)."
)

client = OpenAI(api_key=api_key)


def chat(message: str, model: str = "gpt-4o-mini") -> str:
"""Wyślij wiadomość do ChatGPT i zwróć odpowiedź."""
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": message}],
)
if not response.choices or response.choices[0].message.content is None:
raise ValueError("API zwróciło pustą odpowiedź.")
return response.choices[0].message.content
Comment on lines +16 to +35


def main() -> None:
print("Połączono z ChatGPT. Wpisz 'wyjście' aby zakończyć.\n")
while True:
user_input = input("Ty: ").strip()
if user_input.lower() in {"wyjście", "exit", "quit"}:
print("Do widzenia!")
break
if not user_input:
continue
Comment thread
boci11 marked this conversation as resolved.
try:
reply = chat(user_input)
except Exception as exc:
print(f"Błąd API: {exc}\n")
continue
print(f"ChatGPT: {reply}\n")


if __name__ == "__main__":
main()
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
openai>=1.0.0
python-dotenv>=1.0.0