コンテンツにスキップ

クイックスタート

このチュートリアルでは、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キーを適切に設定

🔗 次のステップ