JamJet

クイックスタート

60秒でJamJetワークフローを実行 — サーバー不要、設定不要、Pythonのみ。

クイックスタート

60秒で開始

サーバー不要。設定不要。Pydantic不要。Pythonだけ。

pip install jamjet

# agent.py

from jamjet import task, tool

@tool
async def web_search(query: str) -> str:
    """現在の情報をWeb検索します。"""
    # 実際の検索実装をここに接続
    return f"Results for: {query}"

@task(model="claude-sonnet-4-6", tools=[web_search])
async def research(question: str) -> str:
    """リサーチアシスタントです。まず検索し、明確に要約してください。"""

import asyncio
result = asyncio.run(research("JamJetとは?"))
print(result)
ANTHROPIC_API_KEY=sk-ant-... python agent.py

これだけです。@toolデコレータで任意のPython関数をエージェントに公開できます。@taskのdocstringがエージェントの指示になります。OpenAI、Anthropic、Ollama、Groqなど、どのモデルでも動作します。

tip: Ollamaをローカルで使用する場合、APIキーは不要:

OPENAI_API_KEY=ollama OPENAI_BASE_URL=http://localhost:11434/v1 python agent.py

model=を任意のOllamaモデル(例: "llama3.2")に変更してください。


提供される機能

  • @tool — 任意の非同期Python関数を自動スキーマ生成付きのツールとして公開
  • @task — 通常のPython関数を永続的なエージェントステップとして使用
  • 永続的実行jamjet devで障害から再開
  • ランタイム強制制限 — イテレーション、コスト、タイムアウトをファーストクラスの制御として実装

ボイラープレート不要。状態クラス不要。依存性注入不要。

注意: 完全なグラフ制御が必要な場合(マルチステップパイプライン、条件分岐、ヒューマンインザループなど)は、複雑なオーケストレーションにWorkflow APIまたはYAMLワークフローを使用してください。


サンプルを試す

jamjet-benchmarksリポジトリに4つの独立したサンプル — すべてOllamaでローカル実行可能:

サンプル内容
01 — タイムライン付きパイプラインステップごとの実行タイムライン、自動
02 — 条件付きルーティング純粋なPython述語としてのルーティング
03 — 評価ハーネス組み込みスコアリング、LLM-as-judge
04 — 自己評価ワークフロードラフト → 判定 → リトライループ
git clone https://github.com/jamjet-labs/jamjet-benchmarks
cd jamjet-benchmarks/examples/01_pipeline_with_timeline
pip install -r requirements.txt
OPENAI_API_KEY=ollama OPENAI_BASE_URL=http://localhost:11434/v1 MODEL_NAME=llama3.2 python main.py

完全なプロジェクトのスキャフォールディング

テンプレートを使用して、より完全なプロジェクトを開始できます:

jamjet init my-agent --template hello-agent
cd my-agent

利用可能なテンプレート:

jamjet init my-agent --list-templates

# hello-agent           最小限のQ&Aワークフロー

# research-agent        ウェブ検索 + 統合(Brave Search MCP)

# rag-assistant         ファイルシステムMCPを使用したRAG

# mcp-tool-consumer     任意のMCPツールサーバーに接続

# mcp-tool-provider     Python関数をMCPツールとして公開

# code-reviewer         品質スコアリング付きGitHub PRレビュー

# hitl-approval         人間参加型の承認ゲート

# multi-agent-review    ライター + クリティックのレビューループ

# a2a-delegator         A2Aプロトコル経由でタスクを委任

# a2a-server            外部エージェントからのA2Aリクエストを処理

# approval-workflow     24時間タイムアウト付きの永続的な承認

永続ランタイムの追加(本番環境)

インプロセスエグゼキュータ(wf.run_sync)は開発に最適です。本番環境では、クラッシュ復旧、マルチインスタンススケジューリング、永続的な状態管理のために、ランタイムサーバーを起動します:

jamjet dev
▶ JamJet Dev Runtime
  Port:  7700
  Mode:  local (SQLite)
  API:   http://localhost:7700

その後、ワークフローを実行します:

jamjet run workflow.yaml --input '{"query": "What is JamJet?"}'
✓ node_completed   think   gpt-4o-mini  512ms
✓ Execution completed.

実行中にクラッシュしても、中断した箇所から正確に再開できます。以前のステップの再実行や無駄なAPI呼び出しは不要です。


90秒でクラッシュリカバリを試す

  1. ランタイムを起動:

    jamjet dev
  2. マルチステップワークフローを実行:

    jamjet run workflow.yaml --input '{"query": "What is JamJet?"}'
  3. 実行中にワーカーを強制終了(実行中にCtrl+Cを押すか、プロセスをkill)

  4. ランタイムを再起動:

    jamjet dev
  5. 最後に完了したチェックポイントからワークフローが再開されることを確認

結果: 以前のステップの再実行なし。無駄なAPI呼び出しなし。状態の損失なし。


APIキーを設定

OpenAI

export OPENAI_API_KEY=sk-...

Anthropic

export ANTHROPIC_API_KEY=sk-ant-...

Ollama(無料、ローカル)

export OPENAI_API_KEY=ollama
export OPENAI_BASE_URL=http://localhost:11434/v1

# ollama pull llama3.2

Groq

export OPENAI_API_KEY=gsk_...
export OPENAI_BASE_URL=https://api.groq.com/openai/v1

次のステップ

  1. コア概念 — エージェント、ノード、状態、永続性
  2. Python SDK — デコレータ、ルーティング、並列ステップ
  3. ワークフロー作成 — 全ノードタイプ、リトライポリシー、条件
  4. MCP統合 — 1行で外部ツールサーバーに接続
  5. 評価ハーネス — ソフトウェアのようにエージェントをテスト

トラブルシューティング

インストール後にjamjetが見つからない場合は? PythonスクリプトディレクトリがPATHに含まれていることを確認してください。python -m jamjetを試してください。

ポート7700で接続が拒否される場合は? jamjet runを使用する前にjamjet devが実行されている必要があります。インプロセスのwf.run_sync()パスではサーバーは不要です。

サポートが必要ですか? GitHub Discussionを開くか、issueを作成してください。

On this page