メインコンテンツへスキップ

Agent FrameWork 比較4 / Strands

    2025年6月15日初稿; 他のものをやりながら改訂をする予定です。

    まとめ

    • Agent定義: 4点 / 5点
      [note]pydanticのモデルとしてのAgentの定義。parameterも比較的シンプル

    • Agent実行: 5点 / 5点
      [note] simple

    • Model定義: 5点 / 5点
      [note]非常にシンプル

    • LangFuse連携: 5点 / 5点
      [note] 環境変数を設定するだけ。

    検証データ等

    ドキュメント類

    LMStudioを用いたシンプルな使い方

    (注意) LMStudioをinstallし、phi-4かそれに相応するLLMを入れておくこと

    from strands.models.litellm import LiteLLMModel
    
    # LMStudio
    lms_model = LiteLLMModel(client_args=dict(base_url="http://localhost:1234/v1/"), model_id="openai/phi-4")
    
    from strands import Agent
    
    agent = Agent(model=lla_model, system_prompt="質問に答えてください。")
    result = agent('こんにちは')
    print(result) # => 'こんにちは!今日はどんなお手伝いができますか?\n'

    その他のLLMの定義方法例

    (注意) APIなどを適切に環境変数か.envファイルに格納してください。

    from strands.models.openai import OpenAIModel
    from strands.models.litellm import LiteLLMModel
    from strands.models.anthropic import AnthropicModel
    
    import os
    
    # OpenAI
    openai_model = OpenAIModel(model_id="gpt-4o")
    
    # Anthropic
    anthropic_model = AnthropicModel(model_id="claude-3-5-haiku-latest", max_tokens=2000)
    
    # Gemini
    gemini_model = LiteLLMModel(model_id="gemini/gemini-2.0-flash", client_args=dict(api_key=os.getenv("GOOGLE_API_KEY")))
    
    # LMStudio
    lms_model = LiteLLMModel(client_args=dict(base_url="http://localhost:1234/v1/"), model_id="openai/phi-4")
    
    # Foundry Local
    fdl_model = LiteLLMModel(client_args=dict(base_url="http://localhost:5273/v1/"), model_id="openai/Phi-4-generic-gpu")
    
    # LlamaCPP
    lla_model = LiteLLMModel(client_args=dict(base_url="http://localhost:8080/v1/"), model_id="openai/phi-4")

    LangFuse連携

    from dotenv import load_dotenv
    load_dotenv()
    
    import os
    import base64
    
    # Auth headerの作成
    LANGFUSE_AUTH = base64.b64encode(
        f"{os.getenv('LANGFUSE_PUBLIC_KEY')}:{os.getenv('LANGFUSE_SECRET_KEY')}".encode()
    ).decode()
     
    # 環境変数の用意(printされたものを.envなどに格納すること)
    print(f'OTEL_EXPORTER_OTLP_ENDPOINT={os.getenv("LANGFUSE_HOST")}/api/public/otel'
    print(f'OTEL_EXPORTER_OTLP_HEADERS=Authorization=Basic {LANGFUSE_AUTH}')

    検証環境

    筆者の確認環境は以下の通りです。

    • 2025年6月15日

      • MacBookPro

        • Apple M4 / 24GB

        • Sequoia 15.4.1

      • LM Studio 0.3.16

      • LangFuse 3.49.1

      • Python 3.12.8

        • anthropic==0.54.0

        • google-genai==1.20.0

        • jupyter==1.1.1

        • openai==1.86.0

        • strands-agents==0.1.7

     
     
    フリーランス。元中小企業のエンジニア/研究員/執行役員、量子情報理論のPhD。 自然言語処理、統計的機械学習、情報理論などやソフトウェアエンジニアリング、組織論あたりを専門にしています。 趣味はビールやボードゲーム。

    あなたへのおすすめ