From 0ea3341ccc907e57ece4e63250ea90dd60eff898 Mon Sep 17 00:00:00 2001 From: balabanovan530 <175+balabanovan530@noreply.localhost> Date: Thu, 4 Jun 2026 15:51:22 +0000 Subject: [PATCH] Add README.md --- README.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..543284b --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ +# Log Parser CLI + +## Overview + +This project provides a simple command‑line tool that parses raw HTTP log lines into typed API events using **Pydantic v2** and **LangChain** structured output. The script accepts a string or a file containing log lines, parses each line into one of two event types (`HttpOkEvent` or `HttpErrorEvent`), and prints a summary table. + +## Installation + +```bash +# Create a virtual environment (recommended) +python -m venv venv +source venv/bin/activate + +# Install dependencies +pip install -r requirements.txt +``` + +The `requirements.txt` contains the following packages: + +- `langchain-core` +- `langchain-openai` +- `pydantic` +- `python-dotenv` + +## Environment Variables + +The tool uses OpenAI (or any compatible LLM) for structured parsing. Set the following variables in a `.env` file or your environment: + +```env +OPENAI_API_KEY=your_api_key +OPENAI_BASE_URL=https://api.openai.com/v1 +OPENAI_MODEL=gpt-3.5-turbo +``` + +If you are using a local LLM (e.g., Ollama or LM Studio), set: + +```env +OPENAI_BASE_URL=http://localhost:11434/v1 +OPENAI_API_KEY=ollama +OPENAI_MODEL=llama3 +``` + +## Usage + +```bash +# Parse a file containing log lines +python agent.py --input logs.txt + +# Or provide raw log string directly +python agent.py --input "200 /api/v1/home\n404 /api/v1/notfound error: Not Found" + +# If no input is provided, a sample log is used +python agent.py +``` + +## Sample Log + +The repository contains a sample log you can use for testing: + +``` +200 /api/v1/users +404 /api/v1/items error: Not Found +500 /api/v1/orders error: Internal Server Error +``` + +## Output + +The script prints a table with columns: `Kind`, `Status`, `Path`, and `Error` (if applicable). Example: + +``` +Kind Status Path Error +----- ------ -------------------- -------------------------------- +ok 200 /api/v1/users +error 404 /api/v1/items Not Found +error 500 /api/v1/orders Internal Server Error +``` + +## Extending + +You can extend the Pydantic models or the parsing logic by editing `agent.py`. The LLM prompt is generated automatically using the `PydanticOutputParser` schema instructions. + +--- + +Feel free to open issues or pull requests if you encounter bugs or have suggestions.