add README.md
This commit is contained in:
@@ -1,2 +1,38 @@
|
|||||||
# task-6a1865008a94f887e50d471c
|
# Structured Output Extraction with Pydantic
|
||||||
|
|
||||||
|
## What this project does
|
||||||
|
This repository demonstrates how to extract structured data from free‑form text using **LangChain** and **Pydantic**. Two schemas are supported:
|
||||||
|
|
||||||
|
1. **PersonInfo** – name, optional age, profession, skills.
|
||||||
|
2. **MeetingNotes** – date, participants, topics, decisions, next steps.
|
||||||
|
|
||||||
|
The extraction is performed in a single LLM call with `PydanticOutputParser` and the schema’s format instructions.
|
||||||
|
|
||||||
|
## File structure
|
||||||
|
- `models.py` – Pydantic models with field descriptions.
|
||||||
|
- `agent.py` – Extraction logic: schema detection, prompt construction, LLM invocation.
|
||||||
|
- `main.py` – CLI demonstrating three example inputs.
|
||||||
|
- `requirements.txt` – Runtime dependencies.
|
||||||
|
- `README.md` – Project description (this file).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
```bash
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
Make sure the environment variable **JOURNAL_MCP_PAT** is set to your BroJS API key.
|
||||||
|
|
||||||
|
## Usage examples
|
||||||
|
Run the script and follow the prompts:
|
||||||
|
```bash
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
You will see three pre‑defined inputs (person, meeting, custom) and the parsed JSON output.
|
||||||
|
|
||||||
|
## How it works
|
||||||
|
1. **Schema detection** – a simple regex checks for words like *meeting* or *date* to choose between `PersonInfo` and `MeetingNotes`.
|
||||||
|
2. **Prompt** – the same template is used; format instructions are injected from the chosen parser.
|
||||||
|
3. **LLM call** – one request to BroJS GPT‑OSS‑20B.
|
||||||
|
4. **Parsing** – `PydanticOutputParser.parse()` validates and returns a Pydantic instance.
|
||||||
|
|
||||||
|
## Extending
|
||||||
|
Add more schemas by creating new Pydantic models in `models.py` and extending `_detect_schema`. The rest of the pipeline remains unchanged.
|
||||||
|
|||||||
Reference in New Issue
Block a user