Thanks to visit codestin.com
Credit goes to github.com

Skip to content

yt1970/ai-qr-coder

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ai-qr-coder

AIエージェントがRust製QRコードエンコーダ/デコーダをゼロから自律構築するデモ。

ローカルLLM(Ollama)がRustコードを生成し、Podmanコンテナ内(--network=none)でビルド・テスト。テスト結果をフィードバックして反復改善する「ラルフループ」パターンで、外部ライブラリなしの純粋なQRコード実装を目指す。

Anthropicの Cコンパイラ事例Ralph Wiggum パターンを ローカルOllama に適用。

仕組み

┌──────────────────────────────────────────────┐
│                 ralph_loop.sh                │
│  ┌────────┐   ┌──────────┐   ┌───────┐       │
│  │ Coder  │──→│ Reviewer │──→│ Fixer │       │
│  └────────┘   └──────────┘   └───────┘       │
│       ↑                          │           │
│       └──────── feedback ────────┘           │
├──────────────────────────────────────────────┤
│  Ollama API          │  Podman (no network)  │
│  (localhost:11434)   │  Rust build & test    │
└──────────────────────────────────────────────┘
  1. Iteration 1: Coder が初期実装を生成
  2. Iteration 2+: Reviewer がテスト失敗を分析 → Fixer が修正パッチを適用
  3. 各イテレーション: --network=none コンテナ内で5フェーズテスト → フィードバック
  4. 回帰ガード: フェーズ数が減少した場合、自動リバート

必要環境

ツール バージョン 用途
macOS (Apple Silicon) M1/M2/M3/M4 ホスト
Ollama v0.16+ LLMランタイム
Podman v5.0+ コンテナ実行
Python3 3.9+ JSON/コード処理
Git 2.0+ 進捗管理

クイックスタート

1. モデルの準備

# Ollama起動(別ターミナル)
ollama serve

# モデルダウンロード(初回のみ)
ollama pull qwen3-coder:latest

2. セットアップ

git clone https://github.com/tnk4on/ai-qr-coder.git
cd ai-qr-coder
./setup.sh

3. 実行

# デフォルト(L1, 最大20イテレーション)
./run.sh

# モデル指定
./run.sh --model qwen3-coder:latest

# カスタム設定
./run.sh --hint-level 3 --max-iterations 10
./run.sh --model qwen2.5-coder:14b --max-iterations 30

# ワークスペース削除確認をスキップ
./run.sh --force

設定

config.env を編集:

TARGET_URL="gihyo.jp"              # QRコードに変換するURL
OLLAMA_MODEL="qwen3-coder:latest"  # 使用モデル
HINT_LEVEL=1                       # ヒントレベル (0-5)
MAX_ITERATIONS=20                  # 最大イテレーション数

ヒントレベル — 段階的難易度

Level スケルトンの内容 難易度
L5 L4 + 小型モデル向け専用プロンプト ★☆☆☆☆☆ 最も簡単
L4 全ヘルパー + encode/decode実装済み ★★☆☆☆☆
L3 全ヘルパー + 詳細レシピ ★★★☆☆☆
L2 全ヘルパー + 簡易TODO ★★★★☆☆
L1 データエンコーディング系をTODO ★★★★★☆ 推奨
L0 グリッド/マスク等もTODO ★★★★★★ 最も難しい

テストフェーズ

Phase テスト内容
1 cargo build — コンパイル
2 cargo test — ユニットテスト
3 エンコード — PBM出力検証
4 ラウンドトリップ — encode → decode → 一致
5 外部スキャン — zbarimg で読み取り

ベンチマーク結果

M1 Max (64GB)、ヒントレベル L1 でのテスト:

モデル サイズ 結果 イテレーション数 時間
qwen3-coder 18 GB 5/5 ✅ 1 50–78s
qwen3.5 17 GB 5/5 ✅ 1 760s
qwen2.5-coder:14b 9.0 GB 5/5 ✅ 3 702s
qwen2.5-coder:7b 4.7 GB 3/5 ❌ 10+
codellama 3.8 GB 0/5 ❌ 3

注意: LLMの出力は非決定的です。実行ごとに結果が異なる場合があります。

ベンチマーク実行

# 特定のモデルでベンチマークを実行
./bench_run.sh <モデル名> <ラベル> [ヒントレベル]

# 例:
./bench_run.sh qwen3-coder:latest qwen3_L1 1
./bench_run.sh qwen2.5-coder:14b qwen25_14b_L3 3

結果は agent_logs/<ラベル>_full.log に保存されます。

ファイル構成

ai-qr-coder/
├── run.sh                    # エントリーポイント
├── setup.sh                  # 環境セットアップ
├── bench_run.sh              # ベンチマーク実行
├── config.env                # 設定
├── Containerfile             # Rust開発コンテナ
├── scripts/
│   ├── ralph_loop.sh         # メインループ (Coder/Reviewer/Fixer)
│   ├── generate_skeleton.sh  # ヒントレベル別スケルトン生成
│   ├── test_harness.sh       # 5フェーズテストスイート
│   ├── extract_code.py       # LLM出力 → ソースファイル抽出
│   ├── stream_ollama.py      # Ollama APIストリーミング
│   └── pbm_to_png.py         # PBM → PNG変換
├── prompts/
│   ├── coder_L[0-5].md       # コーダープロンプト (レベル別)
│   ├── coder_review.md       # レビュアープロンプト
│   └── coder_fix.md          # フィクサープロンプト
└── skeleton/                 # 初期Rustプロジェクトテンプレート
    ├── Cargo.toml
    └── src/
        ├── main.rs           # CLIインターフェース(固定)
        └── qrcode.rs         # GFテーブル + ヘルパー + TODOスタブ

ログ

# 各イテレーションのログ
ls agent_logs/coder_iter_*.log

# ワークスペースのgit履歴
cd workspace && git log --oneline

参考

ライセンス

このプロジェクトは Apache License 2.0 でライセンスされています。

About

ローカルLLM(Ollama)がRust製QRコードエンコーダ/デコーダをゼロから自律構築するデモ

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Shell 47.6%
  • Rust 30.0%
  • Python 21.5%
  • Dockerfile 0.9%