finishi batch tutorial

This commit is contained in:
zachary62 2025-03-31 22:20:00 -04:00
parent 11f808ee8d
commit 748d37fc7b
1 changed files with 19 additions and 22 deletions

View File

@ -1,14 +1,11 @@
# Majority Vote Reasoning
# Batch Translation Process
This project demonstrates a majority vote implementation that enables LLMs to solve complex reasoning problems by aggregating multiple independent attempts. It's designed to improve problem-solving accuracy through consensus-based reasoning.
This project demonstrates a batch processing implementation that enables LLMs to translate documents into multiple languages simultaneously. It's designed to efficiently handle the translation of markdown files while preserving formatting.
## Features
- Improves model reliability on complex problems through multiple attempts
- Works with models like Claude 3.7 Sonnet
- Solves problems that single attempts often fail on
- Provides detailed reasoning traces for verification
- Uses a consensus approach to reduce the impact of occasional reasoning errors
- Translates markdown content into multiple languages in parallel
- Saves translated files to specified output directory
## Getting Started
@ -22,35 +19,34 @@ pip install -r requirements.txt
export ANTHROPIC_API_KEY="your-api-key-here"
```
3. Run a test problem to see majority voting in action:
3. Run the translation process:
```bash
python main.py
```
## How It Works
The implementation uses a MajorityVoteNode that processes multiple attempts and finds consensus:
The implementation uses a `TranslateTextNode` that processes batches of translation requests:
```mermaid
flowchart LR
mv[MajorityVoteNode]
batch[TranslateTextNode]
```
The MajorityVoteNode:
1. Makes multiple independent attempts to solve the same problem
2. Collects structured answers from each attempt
3. Determines the most frequent answer as the final solution
4. Returns the consensus answer
The `TranslateTextNode`:
1. Prepares batches for multiple language translations
2. Executes translations in parallel using the model
3. Saves the translated content to individual files
4. Maintains the original markdown structure
This approach helps overcome occasional reasoning errors that might occur in individual attempts.
This approach demonstrates how PocketFlow can efficiently process multiple related tasks in parallel.
## Example Output
Below is an example of how the majority vote approach uses Claude 3.7 Sonnet to solve this complex problem:
When you run the translation process, you'll see output similar to this:
```
Translated Chinese text
Translated Spanish text
Translated Japanese text
Translated German text
@ -72,9 +68,10 @@ Translations saved to: translations
============================
```
## Files
- [`main.py`](./main.py): Implementation of the majority vote node and flow
- [`utils.py`](./utils.py): Simple wrapper for calling the Anthropic model
- [`main.py`](./main.py): Implementation of the batch translation node
- [`utils.py`](./utils.py): Simple wrapper for calling the Anthropic model
- [`requirements.txt`](./requirements.txt): Project dependencies
The translations are saved to the `translations` directory, with each file named according to the target language.