86 lines
1.6 KiB
Markdown
86 lines
1.6 KiB
Markdown
# Structured Output Extraction with LangChain and Pydantic
|
||
|
||
This project demonstrates how to extract structured data from raw text using LangChain and Pydantic.
|
||
It supports two schemas:
|
||
|
||
- **PersonInfo** – name, age, profession, skills
|
||
- **MeetingNotes** – date, participants, topics, decisions, next steps
|
||
|
||
The CLI automatically selects the appropriate schema based on the input text and prints the parsed object and a short summary.
|
||
|
||
## Prerequisites
|
||
|
||
- Python 3.10+
|
||
- An OpenAI API key (or compatible LLM provider)
|
||
|
||
## Installation
|
||
|
||
```bash
|
||
# Create a virtual environment (optional but recommended)
|
||
python -m venv .venv
|
||
source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
|
||
|
||
# Install dependencies
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## Configuration
|
||
|
||
Create a `.env` file in the project root with your OpenAI key:
|
||
|
||
```
|
||
OPENAI_API_KEY=sk-...
|
||
```
|
||
|
||
## Usage
|
||
|
||
Run the CLI:
|
||
|
||
```bash
|
||
python src/cli.py run
|
||
```
|
||
|
||
You will be prompted to provide text or a file path.
|
||
If no input is given, example texts for both schemas are displayed.
|
||
|
||
### Example
|
||
|
||
```bash
|
||
python src/cli.py run --file example.txt
|
||
```
|
||
|
||
The output will look like:
|
||
|
||
```
|
||
Detected schema: person
|
||
|
||
Parsed object:
|
||
{
|
||
"name": "Анна",
|
||
"age": 28,
|
||
"profession": "Python-разработчик",
|
||
"skills": [
|
||
"FastAPI",
|
||
"Docker"
|
||
]
|
||
}
|
||
|
||
Summary:
|
||
Person: Анна, age=28, profession=Python-разработчик, skills=FastAPI, Docker
|
||
```
|
||
|
||
## Project Structure
|
||
|
||
```
|
||
src/
|
||
├── __init__.py
|
||
├── cli.py
|
||
├── main.py
|
||
└── models.py
|
||
requirements.txt
|
||
README.md
|
||
```
|
||
|
||
## License
|
||
|
||
MIT License |