SmolagentsとNovita AIで自律エージェントを構築する

SmolagentsとNovita AIで自律エージェントを構築する

主なポイント

1.AI エージェント:
決められた固定的なワークフローを超えた自律的な意思決定を実現。
反復的な推論、適応的な実行、継続的な学習を活用します。

2. Smolagents:
軽量な Python ライブラリ(約 1,000 行)で、AI エージェント作成を簡素化。
アクションを直接実行可能な Python コードスニペットとして出力し、サンドボックス環境で安全に実行。
多様なモデル、モダリティ(テキスト、画像、音声、動画)、外部ツール統合をサポート。

3. Novita AI のサポート:
Smolagents と互換性あり。DeepSeek R1 Turbo などの高性能モデルを、拡張されたパフォーマンスと手頃な価格でサポート。

人工知能は、パターン認識から創造的なコンテンツ生成へと進化してきました。次の大きな飛躍は、複雑で多段階の問題を解決するために自律的に意思決定し行動するシステムである エージェンティック AI (agentic AI) の台頭です。この記事では、AI エージェントの概念、コードエージェントの詳細、その構築方法、異なる基盤モデルのパフォーマンス、そしてこの革新的なテクノロジーに関するよくある質問について解説します。

AI エージェントとは?

エージェンティック AI は、従来の固定的なワークフローでは効果的に処理するのが難しい課題に取り組みます。現実の多くのシナリオは複雑で微妙なプロセスを含み、静的な if-else 構造では完全に捉えきれません。エージェンティック AI はワークフローに柔軟性と適応性をもたらし、システムが状況に応じて最適なアクションの順序を動的に決定し実行できるようにします。

https://youtu.be/-pqzyvRp3Tc

どのように動作するか?

エージェンティック AI は、知覚、推論、行動、学習の反復的な動的ループで動作します。中核として、AI エージェントは大規模言語モデル(LLM)を推論エンジンとして使用し、状況を分析し、応答を計画し、専門モデルを調整し、タスクを実行します。ワークフローは通常、次のステップを含みます。

  • データの取り込みと知覚: エージェントは複数のソースからデータを収集・処理し、意思決定プロセスに情報を提供するコンテキスト認識を獲得します。
  • 推論と計画: LLM を使用して、エージェントはデータを解釈し、可能な解決策について推論し、戦略的計画を生成し、目標を達成するために必要なアクションを決定します。
  • 行動と実行: エージェントは外部ツールや定義済み関数と統合し、推論結果に基づいてタスクを実行します。アクションを繰り返し実行し、結果を観察し、望ましい結果が得られるまで調整します。
  • 継続的な学習: フィードバックループや Retrieval-Augmented Generation(RAG)などの手法を通じて、エージェントは独自のデータソースにアクセスし、理解を洗練させ、パフォーマンス、精度、関連性を継続的に向上させます。

これらの能力(自律的な意思決定、反復的な推論、外部ツールの統合、継続的な改善)を組み合わせることで、エージェンティック AI は LLM ベースの推論と現実世界での実行・適応を効果的に橋渡しします。

出典: Nvidia

Smolagents とは?

Smolagents は、強力な AI エージェントの構築を簡素化するために設計された軽量 Python ライブラリです。ミニマルなアプローチにより、そのコアロジックは約 1,000 行のコードに収まっており、抽象化を最小限に抑え、開発者により大きな直接制御を提供します。Smolagents は、最終的に非推奨となる transformers.agents の後継として位置づけられています。詳細は GitHub をご覧ください。

amolagents

主な機能 と主要メカニズム

✨ シンプルさ

  • Smolagents は、約 1,000 行のコードで強力な AI エージェントロジックを実装し、抽象化を最小限に抑えて開発者の柔軟性を高めています(agents.py を参照)。

🧑‍💻 第一級のコードエージェントサポート

  • Smolagents の CodeAgent は、エージェントのアクションを JSON やテキストではなく Python コードスニペットとして直接出力し、効率とパフォーマンスを向上させます。サンドボックス環境(E2B、Docker)内でコードを安全に実行し、従来の JSON/テキストベースのエージェントも引き続きサポートします。

🤗 Hub 統合

  • Smolagents は、Hugging Face Hub を介して再利用可能な Python ベースのツールを簡単に共有およびロードできるようにし、コラボレーションとツールの再利用を合理化します。

🌐 モデル非依存

  • Smolagents は、事実上あらゆる大規模言語モデル(LLM)をサポートします。ローカルの transformers や ollama モデル、Hugging Face ホストモデル、LiteLLM 経由の OpenAI や Anthropic などの外部プロバイダーが含まれます。

👁️ モダリティ非依存

  • Smolagents で作成されたエージェントは、テキスト、画像、動画、音声など、多様な入力モダリティをシームレスに処理できます。

🛠️ ツール非依存

  • Smolagents は、LangChain、Anthropic の MCP、Hugging Face Hub Spaces など、さまざまなエコシステムのツールを柔軟に統合します。

how smolagents woorks

Smolagents と Novita AI API を使用してエージェントを構築する方法

Novita AI は、開発者がシンプルな API を使用して AI モデルを簡単にデプロイできる AI クラウドプラットフォームです。また、手頃な価格で信頼性の高い GPU クラウドを提供し、構築とスケーリングを支援します。

Smolagents は、Novita AI を含むさまざまな大規模言語モデル(LLM)をサポートしています! 次に、deepseek r1 turbo を例として、smolagents と Novita AI のパワーを示します。

特筆すべき点として、Novita AI はスループットが 3 倍の Turbo バージョンを、期間限定で 60% 割引で提供しています!

novita ai no1

今すぐ DeepSeek R1 Turbo を試す!

入力:

import os
from smolagents import OpenAIServerModel, CodeAgent, DuckDuckGoSearchTool

model = OpenAIServerModel(
    model_id="deepseek/deepseek-r1-turbo",
    api_base="https://api.novita.ai/v3/openai",
    api_key="Your API Key" # 対象サーバーの API キーに切り替えてください。
)

agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=model)

agent.run("上海から北京への週末旅行を計画してください。交通手段、旅程、持っていくべきもののリストを含めてください。")

出力:

transport = web_search(query="Shanghai to Beijing transportation weekend trip 2024")                                                                                                                                                                                                                                                           
  print("Transportation options:", transport)                                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                 
  attractions = web_search(query="Beijing 2-day itinerary top attractions 2024")                                                                                                                                                                                                                                                                 
  print("Attraction recommendations:", attractions)                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                 
  details = web_search(query="Beijing travel must-haves 2024")                                                                                                                                                                                                                                                                                   
  print("Essential items and tips:", details)                                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                 
  weekend_plan = {                                                                                                                                                                                                                                                                                                                               
      "Transportation": {                                                                                                                                                                                                                                                                                                                        
          "Recommended Option": "Friday evening G12 train (18:00-22:30) from Shanghai Hongqiao to Beijing South",                                                                                                                                                                                                                                
          "Alternative": "Saturday morning flight (07:00-09:00+transit time)"                                                                                                                                                                                                                                                                    
      },                                                                                                                                                                                                                                                                                                                                         
      "Itinerary": {                                                                                                                                                                                                                                                                                                                             
          "Day 1 (Saturday)": [                                                                                                                                                                                                                                                                                                                  
              "08:30 - Tiananmen Square (free entry)",                                                                                                                                                                                                                                                                                           
              "10:00 - Forbidden City (booked ticket, 3-4hr tour)",                                                                                                                                                                                                                                                                              
              "14:00 - Temple of Heaven",                                                                                                                                                                                                                                                                                                        
              "Evening: Houhai Lake dinner + hutongs exploration"                                                                                                                                                                                                                                                                                
          ],                                                                                                                                                                                                                                                                                                                                     
          "Day 2 (Sunday)": [                                                                                                                                                                                                                                                                                                                    
              "07:00 - Depart for Mutianyu Great Wall (book shuttle/taxi)",                                                                                                                                                                                                                                                                      
              "09:00-12:00 - Great Wall visit (cable car recommended)",                                                                                                                                                                                                                                                                          
              "14:00 - Summer Palace",                                                                                                                                                                                                                                                                                                           
              "18:00 - Return to city, take G27 train (19:00-23:18) back to Shanghai"                                                                                                                                                                                                                                                            
          ]                                                                                                                                                                                                                                                                                                                                      
      },                                                                                                                                                                                                                                                                                                                                         
      "Must-Haves": [                                                                                                                                                                                                                                                                                                                            
          "Pre-booked Forbidden City ticket (¥60)",                                                                                                                                                                                                                                                                                              
          "Comfortable walking shoes",                                                                                                                                                                                                                                                                                                           
          "Layered clothing (check weather forecast)",                                                                                                                                                                                                                                                                                           
          "Portable WiFi/power bank",                                                                                                                                                                                                                                                                                                            
          "WeChat Pay/Alipay balance",                                                                                                                                                                                                                                                                                                           
          "ID/passport for train ticket collection"                                                                                                                                                                                                                                                                                              
      ]                                                                                                                                                                                                                                                                                                                                          
  }                                                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                 
  final_answer(weekend_plan)                                       

最終回答

Final answer: {'Transportation': {'Recommended Option': 'Friday evening G12 train (18:00-22:30) from Shanghai Hongqiao to Beijing South', 'Alternative': 'Saturday morning flight (07:00-09:00+transit time)'}, 'Itinerary': {'Day 1 (Saturday)': ['08:30 - Tiananmen Square (free entry)', '10:00 - Forbidden City (booked ticket, 3-4hr tour)', '14:00 - Temple of Heaven', 'Evening: Houhai Lake dinner + hutongs exploration'], 'Day 2 (Sunday)': ['07:00 - Depart for Mutianyu Great Wall (book shuttle/taxi)', '09:00-12:00 - Great Wall visit (cable car recommended)', '14:00 - Summer Palace', '18:00 - Return to city, take G27 train (19:00-23:18) back to Shanghai']},         
'Must-Haves': ['Pre-booked Forbidden City ticket (¥60)', 'Comfortable walking shoes', 'Layered clothing (check weather forecast)', 'Portable WiFi/power bank', 'WeChat Pay/Alipay balance', 'ID/passport for train ticket collection']}

Smolagents におけるモデルパフォーマンスの比較

smolagents llm leaderboard

詳細は Hugging Face でご覧いただけます。

エージェンティック AI は人工知能の主要な進歩であり、自律的な問題解決とタスク実行を実現します。Smolagents ライブラリは、特にインテリジェントエージェントの構築を目的として設計された軽量かつ強力なフレームワークを提供し、直接的なコードベースのアクションと幅広い大規模言語モデル(LLM)との互換性を重視しています。オープンソースモデルが急速に改善し続ける中、Smolagents は開発者にとって、多様な領域でエージェンティック AI のエキサイティングな可能性を探求し実装するための、アクセスしやすく汎用性の高いツールキットを提供します。

よくある質問

エージェンティック AI と生成 AI の主な違いは何ですか?

生成 AI はテキストや画像などの新しいコンテンツの作成に焦点を当てているのに対し、エージェンティック AI は意思決定を行い、目標を達成するために自律的にタスクを実行することに焦点を当てています。

smolagents でのコード実行は安全ですか?

smolagents は、E2B や Docker を使用したサンドボックス環境など、安全なコード実行のためのオプションを提供しており、ローカルシステムへのリスクを排除します。

smolagents に関する詳細情報はどこで見つけられますか?

smolagents の GitHub リポジトリと、ライブラリ専用の Hugging Face Space で、完全なドキュメント、チュートリアル、例を見つけることができます。

Novita AI は、AI の野心を支援するオールインワンのクラウドプラットフォームです。統合 API、サーバーレス、GPU インスタンス — コスト効率の高いツールを提供します。インフラストラクチャを排除し、無料で開始して、AI のビジョンを現実にしましょう。

おすすめの記事