クイックスタート - Refinire
Author: kitfactory
Description: 複数のLLMプロバイダーに対応した統一インターフェースライブラリ

コンテンツにスキップ

# クイックスタート

このチュートリアルでは、Refinire を使った最小限のLLM活用例を紹介します。数分で動作するAIエージェントを作成できます。

## 前提条件

- Python 3.9以上がインストールされていること
- OpenAIのAPIキーが設定されていること（`OPENAI_API_KEY`環境変数）

    # 環境変数の設定例（Windows）
    set OPENAI_API_KEY=your_api_key_here

    # 環境変数の設定例（Linux/Mac）
    export OPENAI_API_KEY=your_api_key_here

## 1. モデルインスタンスの取得

複数のLLMプロバイダーを統一インターフェースで扱えます。

    from refinire import get_llm

    # OpenAI
    llm = get_llm("gpt-4o-mini")

    # Anthropic Claude
    llm = get_llm("claude-3-sonnet")

    # Google Gemini
    llm = get_llm("gemini-pro")

    # Ollama（ローカルLLM）
    llm = get_llm("llama3.1:8b")

## 2. シンプルなAgent作成

基本的な対話エージェントを作成します。

    from agents import Agent, Runner
    from refinire import get_llm

    llm = get_llm("gpt-4o-mini")
    agent = Agent(
        name="Assistant",
        model=llm,
        instructions="あなたは親切なアシスタントです。丁寧で分かりやすい回答を心がけてください。"
    )

    result = Runner.run_sync(agent, "こんにちは！")
    print(result.final_output)

## 3. GenAgent + Flow で高度なワークフロー（推奨）

自動評価と品質向上機能を含む高度なエージェントを作成します。

    from refinire import create_simple_gen_agent, Flow, Context
    import asyncio

    # 自動評価機能付きGenAgentを作成
    gen_agent = create_simple_gen_agent(
        name="ai_expert",
        instructions="""
        あなたは専門知識豊富なAIアシスタントです。
        ユーザーの要望に応じて、正確で分かりやすい文章を生成してください。
        専門用語を使う場合は、必ず説明を付けてください。
        """,
        evaluation_instructions="""
        生成された文章を以下の観点で100点満点で評価してください：
        - 正確性（40点）
        - 分かりやすさ（30点）
        - 完全性（30点）

        評価とともに改善点があれば具体的に指摘してください。
        """,
        model="gpt-4o-mini",
        threshold=75  # 75点未満の場合は自動で再生成
    )

    # 超シンプルなFlowを作成
    flow = Flow(steps=gen_agent)

    # 実行
    async def main():
        result = await flow.run(input_data="機械学習と深層学習の違いを教えて")
        print("生成結果:")
        print(result.shared_state["ai_expert_result"])

        # 評価スコアも確認可能
        if "ai_expert_evaluation" in result.shared_state:
            print(f"\n品質スコア: {result.shared_state['ai_expert_evaluation']}")

    # 実行
    asyncio.run(main())

## 4. ツール使用可能なエージェント

外部機能を使えるエージェントを作成します。

    from refinire import create_simple_gen_agent, Flow
    import asyncio

    def get_weather(city: str) -> str:
        """指定された都市の天気を取得します"""
        # 実際のAPIを呼ぶ代わりにダミーデータを返す
        return f"{city}の天気: 晴れ、気温22度"

    def calculate(expression: str) -> float:
        """数式を計算します"""
        try:
            return eval(expression)
        except:
            return 0.0

    # ツール使用可能なエージェント
    tool_agent = create_simple_gen_agent(
        name="tool_assistant",
        instructions="ユーザーの質問に対して、必要に応じてツールを使って回答してください。",
        model="gpt-4o-mini",
        tools=[get_weather, calculate]
    )

    flow = Flow(steps=tool_agent)

    async def main():
        result = await flow.run(input_data="東京の天気と、15 * 23の計算結果を教えて")
        print(result.shared_state["tool_assistant_result"])

    asyncio.run(main())

## 5. 複数ステップのワークフロー

複数のステップを組み合わせた複雑なワークフローも簡単に作成できます。

    from refinire import Flow, FunctionStep, Context
    import asyncio

    def analyze_input(user_input: str, ctx: Context) -> Context:
        """ユーザー入力を分析"""
        ctx.shared_state["analysis"] = f"入力「{user_input}」を分析しました"
        return ctx

    def generate_response(user_input: str, ctx: Context) -> Context:
        """回答を生成"""
        analysis = ctx.shared_state.get("analysis", "")
        ctx.shared_state["response"] = f"{analysis}に基づいて回答を生成しました"
        ctx.finish()  # ワークフロー終了
        return ctx

    # 複数ステップのFlow
    flow = Flow([
        ("analyze", FunctionStep("analyze", analyze_input)),
        ("respond", FunctionStep("respond", generate_response))
    ])

    async def main():
        result = await flow.run(input_data="AIについて教えて")
        print(result.shared_state["response"])

    asyncio.run(main())

## 6. 旧AgentPipeline（非推奨）

    # 注意：AgentPipelineはv0.1.0で削除予定です
    from refinire import AgentPipeline

    pipeline = AgentPipeline(
        name="eval_example",
        generation_instructions="あなたは役立つアシスタントです。",
        evaluation_instructions="生成された文章を分かりやすさで100点満点評価してください。",
        model="gpt-4o-mini",
        threshold=70
    )

    result = pipeline.run("AIの活用事例を教えて")
    print(result)

## 重要なポイント

### ✅ 推奨されるアプローチ

- `get_llm` で主要なLLMを簡単取得
- `GenAgent + Flow` で生成・評価・自己改善まで一気通貫
- `Flow(steps=gen_agent)` だけで複雑なワークフローも超シンプルに実現
- 自動品質管理: threshold設定で品質を自動維持

### ⚠️ 注意事項

- 旧 `AgentPipeline` は v0.1.0 で削除予定（移行は簡単です）
- 非同期処理（`asyncio`）の使用を推奨
- 環境変数でAPIキーを適切に設定

### 🔗 次のステップ

- API リファレンス - 詳細な機能説明
- 組み合わせ可能なフローアーキテクチャ - 高度なワークフロー
- サンプル集 - 実用的な使用例