Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

SmolAgentsとDeepseek R1を使ったAIエージェントの構築方法

本文では、SmolAgentsとDeepSeek R1を用いたAIエージェントの構築方法を紹介しています。システム要件、PDF処理、推論エージェントの実装、RAGパイプラインの構築、AIエージェントの展開について詳しく説明します。

中村 拓也

中村 拓也

Updated on 2月 26, 2025

イントロダクション

高度な推論モデルと軽量フレームワークの統合は、AIシステムが情報を取得、処理、および提示する方法を変革しています。このガイドでは、高性能の推論モデルであるDeepSeek R1と、Hugging FaceのミニマリストエージェントフレームワークであるSmolAgentsを使用して、リトリーバル拡張生成(RAG)システムを構築します。このシステムは、効率的なドキュメント処理、インテリジェントな検索、人間のような推論を可能にし、研究、顧客サポート、知識管理アプリケーションに最適です。

💡
DeepSeek R1を使用してワークフローを効率化できる強力なAPI管理ツールを探しているなら、Apidogを見逃さないでください。今日は無料でApidogをダウンロードでき、DeepSeek R1のようなプロジェクトでの作業に完璧に調整されていて、開発の旅をよりスムーズで楽しいものにします!
ボタン

セットアップを実行するためのシステム要件

AIエージェントは、四つのコアタスクを実行します:

  1. PDFのロードと処理: ドキュメントを検索可能なテキストチャンクに変換します。
  2. ベクターデータベースの作成: 高速セマンティック検索のために埋め込みを保存します。
  3. データの取得と推論: DeepSeek R1を使用して取得したデータを分析し、回答を生成します。
  4. ユーザーとの対話: シームレスなインタラクションのための会話インターフェースを提供します。


ステップ 1: PDF ドキュメントの読み込みと処理

ツールとライブラリ

  • LangChain: ドキュメントの読み込みとテキスト分割のために使用します。
  • ChromaDB: 埋め込みを保存するための軽量ベクターデータベースです。
  • Hugging Face Embeddings: テキストをベクター表現に変換するために使用します。

実装

1.1 PDFファイルの読み込み

LangChainのDirectoryLoaderを使用してディレクトリからすべてのPDFを読み込みます。各PDFは処理のためにページに分割されます。

from langchain_community.document_loaders import DirectoryLoader, PyPDFLoader  
from langchain.text_splitter import RecursiveCharacterTextSplitter  

def load_and_process_pdfs(data_dir: str):  
    loader = DirectoryLoader(  
        data_dir,  
        glob="**/*.pdf",  
        loader_cls=PyPDFLoader  
    )  
    documents = loader.load()  

    # ドキュメントをチャンクに分割  
    text_splitter = RecursiveCharacterTextSplitter(  
        chunk_size=1000,  
        chunk_overlap=200,  
        length_function=len,  
    )  
    return text_splitter.split_documents(documents)  

1.2 ベクターストアの作成

テキストチャンクを埋め込みに変換し、効率的な取得のためにChromaDBに保存します。

from langchain_huggingface import HuggingFaceEmbeddings  
from langchain_community.vectorstores import Chroma  
import os  
import shutil  

def create_vector_store(chunks, persist_directory: str):  
    if os.path.exists(persist_directory):  
        shutil.rmtree(persist_directory)  

    embeddings = HuggingFaceEmbeddings(  
        model_name="sentence-transformers/all-mpnet-base-v2",  
        model_kwargs={'device': 'cpu'}  
    )  

    vectordb = Chroma.from_documents(  
        documents=chunks,  
        embedding=embeddings,  
        persist_directory=persist_directory  
    )  
    return vectordb  

重要な考慮事項

  • チャンクサイズ: 1000文字、200文字のオーバーラップは、コンテキスト保持と検索効率のバランスを取ります。
  • 埋め込みモデル: all-mpnet-base-v2は高品質な文埋め込みを提供します。

ステップ 2: DeepSeek R1を使用した推論エージェントの実装

なぜDeepSeek R1なのか?

DeepSeek R1は多段階推論に特化しており、複雑なクエリを分解し、関係を推測し、構造化された回答を生成できます。

推論モデルの初期化

ローカル推論のためにOllamaを介してDeepSeek R1を構成します:

from smolagents import OpenAIServerModel, CodeAgent  

reasoning_model_id = "deepseek-r1:7b"  

def get_model(model_id):  
    return OpenAIServerModel(  
        model_id=model_id,  
        api_base="http://localhost:11434/v1",  
        api_key="ollama"  
    )  

reasoning_model = get_model(reasoning_model_id)  
reasoner = CodeAgent(  
    tools=[],  
    model=reasoning_model,  
    add_base_tools=False,  
    max_steps=2  # 効率のために推論イテレーションの制限  
)  

ステップ 3: リトリーバル拡張生成 (RAG) パイプラインの構築

ツール設計

文書の取得とDeepSeek R1の推論機能を組み合わせたRAGツールを作成します。

from smolagents import tool  

@tool  
def rag_with_reasoner(user_query: str) -> str:  
    # 関連するドキュメントを取得  
    docs = vectordb.similarity_search(user_query, k=3)  
    context = "\n\n".join(doc.page_content for doc in docs)  

    # 推論プロンプトを生成  
    prompt = f"""  
    以下のコンテキストに基づいて、ユーザーの質問に簡潔に答えます。  
    情報が不十分な場合は、洗練されたクエリを提案します。  

    コンテキスト:  
    {context}  

    質問: {user_query}  

    回答:  
    """  

    return reasoner.run(prompt, reset=False)  

主な特徴

  • コンテクストプロンプト: 取得したドキュメントをプロンプトに埋め込んで、根拠のある回答を得られます。
  • フォールバックメカニズム: データが不十分な場合、モデルはより良いクエリを提案します。

ステップ 4: プライマリーAIエージェントの展開

ワークフローの調整

Llama 3.2を搭載したプライマリーエージェントは、ユーザーインタラクションを管理し、必要に応じてRAGツールを呼び出します:

from smolagents import ToolCallingAgent, GradioUI  

tool_model = get_model("llama3.2")  
primary_agent = ToolCallingAgent(  
    tools=[rag_with_reasoner],  
    model=tool_model,  
    add_base_tools=False,  
    max_steps=3  
)  

def main():  
    GradioUI(primary_agent).launch()  

if __name__ == "__main__":  
    main()  
プライマリーAIエージェントの展開ワークフローの調整

ユーザーインターフェース

UIはリアルタイムインタラクションのためのシンプルなウェブインターフェースを提供します:

  • ユーザーがクエリを入力します。
  • エージェントがドキュメントを取得し、DeepSeek R1で推論し、回答を返します。

DeepSeek R1とSmolAgentsの統合により、複雑なクエリを分解するための強化された推論、高速なセマンティック検索での効率的な取得、コスト効率の良いローカル展開を組み合わせた強力なAIソリューションが提供されます。そのスケーラブルなアーキテクチャにより、新しいツールがシームレスに統合でき、研究(技術文書の分析)、顧客サポート(FAQの解決)、知識管理(静的リソースをインタラクティブシステムに変換)などのアプリケーションに最適です。

将来的な強化では、Word、HTML、およびmarkdownのドキュメントサポートを拡張したり、より広いコンテクストのためにリアルタイムウェブ検索を統合したり、時間の経過とともに回答の精度を改善するためのフィードバックループを実装したりすることが考えられます。このフレームワークは、多様なニーズに合わせたインテリジェントで適応型のAIアシスタントを構築するための多用途な基盤を提供します。

Markdown変換革命:MarkItDown MCPで始めるIT業界の新常識観点

Markdown変換革命:MarkItDown MCPで始めるIT業界の新常識

MarkItDown MCPは多様なファイル形式を効率的にMarkdownへ変換できるAPI駆動のツールです。IT業界の作業効率化と自動化に最適。

中村 拓也

4月 21, 2025

Skywork-OR1-32B: Deepseek R1に迫るオープンソース最上位モデル観点

Skywork-OR1-32B: Deepseek R1に迫るオープンソース最上位モデル

2025年4月13日、SkyworkAIはSkywork-OR1(Open Reasoner 1)シリーズをリリースしました。このシリーズには3つのモデルが含まれます:Skywork-OR1-Math-7B、Skywork-OR1-7B-Preview、そしてSkywork-OR1-32B-Previewです。 * これらのモデルは、数学的推論能力とコード推論能力に特化した大規模なルールベースの強化学習を用いてトレーニングされています。 * モデルはDeepSeekの蒸留アーキテクチャを基盤として構築されています:7BバリアントはDeepSeek-R1-Distill-Qwen-7Bをベースとしており、32BモデルはDeepSeek-R1-Distill-Qwen-32Bをベースとしています。 💡美しいAPIドキュメントを生成する素晴らしいAPIテストツールが欲しいですか? 開発チームが最大の生産性で一緒に作業するための統合型オールインワンプラットフォームが欲しいですか? Apidogはすべての要求を満たし、より手頃な価格でPostmanを置き換えます!ボタン Sky

中村 拓也

4月 13, 2025

2025年の30のベストPostman代替ツール | 無料でオープンソースのAPIテストツール観点

2025年の30のベストPostman代替ツール | 無料でオープンソースのAPIテストツール

Postmanは長い間、API開発のための定番ツールとして広く利用されており、API設計、テスト、およびドキュメント作成を提供しています。これにより、ソフトウェア業界でほぼ10年間普遍的な存在となっています。 しかし、2021年にPostmanが大幅な料金プランの変更を実施したことで、その優位性が揺らぎました。無制限ユーザーライセンスを廃止し、ユーザーごとの月額料金に移行したことが多くの開発者に影響を与え、無料でオープンソースの、コスト効率の良いPostmanの代替ツールを探す動きが加速しました。 幸運なことに、APIツールの景観は大いに広がり、機能が豊富で無料またはオープンソースのAPIテストツールが溢れています。この記事では、これらの機能、利点、欠点について包括的に説明します。 なぜユーザーはPostmanから離れているのか? Postmanは数年間、API開発およびテストのための定番ツールでした。しかし、多くのユーザーにとって、その無料プランの制約が致命的な問題となります — 特にプロジェクトが拡大し、チームが成長するにつれて。以下はユーザーが代替手段を探す理由です:

Oliver Kingsley

4月 11, 2025