84 lines
2.0 KiB
Markdown
84 lines
2.0 KiB
Markdown
# Assignment Card Extraction
|
||
|
||
This project demonstrates how to convert a natural language assignment description into a structured data object using **LangChain** and **Pydantic**.
|
||
|
||
## Features
|
||
|
||
- Parses assignment details such as title, subject, deadline, deliverable type, and grading hints.
|
||
- Uses OpenAI's GPT model to interpret free‑form text.
|
||
- Validates the output with a Pydantic model to ensure type safety.
|
||
|
||
## Prerequisites
|
||
|
||
- Python 3.10 or newer
|
||
- An OpenAI API key
|
||
|
||
## Setup
|
||
|
||
1. **Clone the repository** (or copy the files into a directory):
|
||
|
||
```bash
|
||
git clone https://github.com/your-username/assignment-card-extractor.git
|
||
cd assignment-card-extractor
|
||
```
|
||
|
||
2. **Create a virtual environment** (recommended):
|
||
|
||
```bash
|
||
python -m venv .venv
|
||
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
||
```
|
||
|
||
3. **Install dependencies**:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
4. **Configure the OpenAI API key**:
|
||
|
||
- Open the `.env` file.
|
||
- Replace `your_openai_api_key_here` with your actual key.
|
||
|
||
```dotenv
|
||
OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXX
|
||
```
|
||
|
||
## Running the Example
|
||
|
||
```bash
|
||
python src/main.py
|
||
```
|
||
|
||
You should see output similar to:
|
||
|
||
```
|
||
=== Parsed Assignment Card ===
|
||
{
|
||
"title": "Мини-отчёт по LangChain",
|
||
"subject": "LangChain",
|
||
"deadline_hint": "к пятнице",
|
||
"deliverable_type": "отчёт",
|
||
"grading_hints": [
|
||
"полнота",
|
||
"пример кода"
|
||
]
|
||
}
|
||
|
||
=== Human-readable Summary ===
|
||
Title: Мини-отчёт по LangChain
|
||
Subject: LangChain
|
||
Deadline: к пятнице
|
||
Deliverable: отчёт
|
||
Grading Hints: полнота, пример кода
|
||
```
|
||
|
||
## Customization
|
||
|
||
- **Change the LLM**: Edit `src/main.py` to use a different model or adjust temperature.
|
||
- **Add more fields**: Update the `AssignmentCard` model and the prompt template accordingly.
|
||
- **Use in a pipeline**: Import the `chain` object from `src/main.py` into your own application.
|
||
|
||
## License
|
||
|
||
MIT License |