A small single-session chat client for OpenAI-compatible Responses API endpoints.
Project description
codex-chat-bot
A small Python chat project with:
- a Python programming interface
- a command-line interface
- single-session memory
- configurable API key, base URL, model, and system rules
The project uses OpenAI SDK-compatible Responses API endpoints.
Installation
python -m pip install codex-chat-bot
Environment Variables
Only CODEX_CHAT_* environment variables are read:
export CODEX_CHAT_API_KEY="your API key"
export CODEX_CHAT_BASE_URL="https://api.openai.com/v1"
export CODEX_CHAT_MODEL="gpt-5.5" # optional
Command-Line Usage
Run a single chat turn:
codex-chat "Write a Python hello world example."
Start interactive chat:
codex-chat
If codex-chat is not on your PATH, run the module directly:
python -m codex_chat_bot.cli
python -m codex_chat_bot.cli "Hello"
Interactive commands:
/resetclears the current session memory./import PATHloads chat history from a JSON file./export PATHsaves chat history to a JSON file./exitor/quitexits the chat.
Common options:
codex-chat --api-key "your API key" --base-url "https://api.openai.com/v1" "Hello"
codex-chat --model gpt-5.5 --system "You are a concise programming assistant."
codex-chat --system-rule "Answer in English." --system-rule "Keep answers short." "Explain pytest."
codex-chat --system-rules-file ./rules.txt "Review this idea."
codex-chat --bind-history ./history.json "Continue our chat."
codex-chat --base-url "https://api.openai.com/v1" "Explain pytest."
If CODEX_CHAT_API_KEY or CODEX_CHAT_BASE_URL is not set and the value was
not passed on the command line, interactive CLI startup prompts for the missing
value.
--bind-history loads the JSON file if it already exists, creates it if it does
not, and writes every new message to that file as the chat changes.
Python API
from codex_chat_bot import ChatConfig, ChatSession
session = ChatSession(ChatConfig.from_env())
print(session.ask("Remember that my project is named codex-chat-bot."))
print(session.ask("What is my project called?"))
session.bind_history("history.json")
session.ask("This message is saved automatically.")
You can also pass configuration explicitly:
from codex_chat_bot import ChatConfig, ChatSession
config = ChatConfig(
api_key="your API key",
base_url="https://api.openai.com/v1",
model="gpt-5.5",
system_rules=(
"You are a patient Python programming assistant.",
"Answer in English.",
"Keep code examples runnable.",
),
)
session = ChatSession(config)
answer = session.ask("Write a function that reads a JSON file.")
print(answer)
system_rules are added to the session's initial system message and stay active
until the session is reset.
Chat history JSON uses a top-level messages array:
{
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "Hello" },
{ "role": "assistant", "content": "Hi!" }
]
}
Tests
python -m pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file codex_chat_bot-0.1.0.tar.gz.
File metadata
- Download URL: codex_chat_bot-0.1.0.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.11.15 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddcbde52b176b71f14523a0084d022636bd30785649003b298f8c574b6d48f2e
|
|
| MD5 |
2ea40008d587b2e8cf3f4027544520f4
|
|
| BLAKE2b-256 |
c7c8b655bf34f36b9f521d1f2abed1df57b5237b731a766e2dec50fd2136a860
|
File details
Details for the file codex_chat_bot-0.1.0-py3-none-any.whl.
File metadata
- Download URL: codex_chat_bot-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.11.15 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9282d4a0f7150759915e3466b1399d4ca63b89b354fa82ef068d1da7391bbfc4
|
|
| MD5 |
32454c0bcf9d7920c02ec85677453947
|
|
| BLAKE2b-256 |
5ab3aa316c5de648336da0bd9af673a2973a21871324ae0af4556c6af6e8f52d
|