DeepSeek R1 を React アプリに統合する方法

Dev.to / 2026/4/14

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • この記事では、AI による検索とレコメンドを有効にするために、DeepSeek R1 SDK を React アプリケーションに統合する手順を段階的に解説します。
  • Node.js(v14+)を用意し、既存の React プロジェクトがあること、そして開発者ポータルから DeepSeek R1 の API キーを取得することといった前提条件を示します。
  • npm を使って SDK をインストールし、アプリ全体で再利用できるように共有モジュール(例:`src/deepseek.js`)で初期化する方法を説明します。
  • 続いて、DeepSeek R1 を呼び出して結果を取得し、UI 上に表示する React の検索コンポーネントを構築する例を示します。
  • 全体として、このガイドはフロントエンドのワークフローに DeepSeek R1 を組み込み、高度な検索機能によってユーザー体験を向上させることに焦点を当てています。

DeepSeek R1をReactアプリに統合する

DeepSeek R1は、強力なAI駆動の検索およびレコメンドエンジンであり、Reactアプリケーションにおけるユーザー体験を向上させることができます。このチュートリアルでは、SDKのセットアップから高度な検索機能の実装まで、DeepSeek R1をReactアプリに統合する手順を説明します。

前提条件

統合に入る前に、以下が用意できていることを確認してください:

  • Node.js がインストール済み(v14以上)
  • React のプロジェクト(なければ npx create-react-app で作成してください)
  • DeepSeek R1 の APIキーDeepSeekのDeveloper Portalで登録)

手順1:DeepSeek R1 SDKをインストールする

まず、npmを使ってDeepSeek R1 SDKをインストールします:

npm install @deepseek/r1-sdk

手順2:SDKを初期化する

SDKを初期化するために、src ディレクトリに新しいファイル deepseek.js を作成します。これによりSDKは1回だけセットアップされ、アプリ全体で再利用できるようになります。

// src/deepseek.js
import { DeepSeekR1 } from '@deepseek/r1-sdk';

const API_KEY = 'your_api_key_here';
const deepSeek = new DeepSeekR1(API_KEY);

export default deepSeek;

'your_api_key_here' を、実際のDeepSeek R1 APIキーに置き換えてください。

手順3:検索コンポーネントを作成する

ここから、DeepSeek R1を活用して検索結果を取得し表示する検索コンポーネントを作りましょう。

// src/components/Search.js
import React, { useState } from 'react';
import deepSeek from '../deepseek';

const Search = () => {
  const [query, setQuery] = useState('');
  const [results, setResults] = useState([]);

  const handleSearch = async (e) => {
    e.preventDefault();
    try {
      const response = await deepSeek.search(query);
      setResults(response.data.results);
    } catch (error) {
      console.error('Error fetching search results:', error);
    }
  };

  return (
    <div>
      <form onSubmit={handleSearch}>
        <input
          type="text"
          value={query}
          onChange={(e) => setQuery(e.target.value)}
          placeholder="検索..."
        />
        <button type="submit">検索</button>
      </form>
      <ul>
        {results.map((result, index) => (
          <li key={index}>{result.title}</li>
        ))}
      </ul>
    </div>
  );
};

export default Search;

このコンポーネントには以下が含まれます:

  • ユーザーが検索クエリを入力するための入力フィールドを持つフォーム。
  • クエリの状態を管理する useState フック。
  • handleSearch 関数で、DeepSeek R1 から検索結果を取得します。
  • 結果を表示するためのリスト。

Step 4: 検索コンポーネントをアプリに統合する

メインの App コンポーネントに Search コンポーネントを統合します。

// src/App.js
import React from 'react';
import Search from './components/Search';

function App() {
  return (
    <div className="App">
      <h1>DeepSeek R1 Search Demo</h1>
      <Search />
    </div>
  );
}

export default App;

これでアプリを実行(npm start)すると、DeepSeek R1 を使って結果を取得する検索バーが表示されるはずです。

Step 5: 高度な機能を実装する(任意)

DeepSeek R1 は、フィルタリング、ソート、ページネーションといった高度な機能をサポートしています。カテゴリによるフィルタリングの実装方法は以下のとおりです。

// src/components/Search.js
import React, { useState } from 'react';
import deepSeek from '../deepseek';

const Search = () => {
  const [query, setQuery] = useState('');
  const [category, setCategory] = useState('all');
  const [results, setResults] = useState([]);

  const handleSearch = async (e) => {
    e.preventDefault();
    try {
      const response = await deepSeek.search(query, { category });
      setResults(response.data.results);
    } catch (error) {
      console.error('検索結果の取得中にエラーが発生しました:', error);
    }
  };

  return (
    <div>
      <form onSubmit={handleSearch}>
        <input
          type="text"
          value={query}
          onChange={(e) => setQuery(e.target.value)}
          placeholder="Search..."
        />
        <select value={category} onChange={(e) => setCategory(e.target.value)}>
          <option value="all">すべて カテゴリ</option>
          <option value="books">書籍</option>
          <option value="movies">映画</option>
          <option value="music">音楽</option>
        </select>
        <button type="submit">検索</button>
      </form>
      <ul>
        {results.map((result, index) => (
          <li key={index}>{result.title}</li>
        ))}
      </ul>
    </div>
  );
};

export default Search;

この強化版では:

  • ドロップダウンメニューでカテゴリ別に結果を絞り込めます。
  • handleSearch 関数には、検索パラメータとして category が含まれます。

ステップ6:エラーを適切に扱う

何か問題が起きたときのユーザー体験を改善するために、エラーハンドリングを追加してください。

// src/components/Search.js
import React, { useState } from 'react';
import deepSeek from '../deepseek';

const Search = () => {
  const [query, setQuery] = useState('');
  const [category, setCategory] = useState('all');
  const [results, setResults] = useState([]);
  const [error, setError] = useState(null);

  const handleSearch = async (e) => {
    e.preventDefault();
    setError(null);
    try {
      const response = await deepSeek.search(query, {category});
      setResults(response.data.results);
    } catch (error) {
      setError('検索結果の取得に失敗しました。もう一度お試しください。');
    }
  };

返却形式: {"translated": "翻訳されたHTML"}return (
    <div>
      <form onSubmit={handleSearch}>
        <input
          type="text"
          value={query}
          onChange={(e) => setQuery(e.target.value)}
          placeholder="Search..."
        />
        <select value={category} onChange={(e) => setCategory(e.target.value)}>
          <option value="all">All Categories</option>
          <option value="books">Books</option>
          <option value="movies">Movies</option>
          <option value="music">Music</option>
        </select>
        <button type="submit">Search</button>
      </form>
      {error && <p style={{ color: 'red' }}>{error}</p>}
      <ul>
        {results.map((result, index) => (
          <li key={index}>{result.title}</li>
        ))}
      </ul>
    </div>
  );
};

export default Search;

現在、エラーはユーザーフレンドリーな形でユーザーに表示されます。

結論

DeepSeek R1をReactアプリに統合すると、検索機能を強化するための可能性が広がります。基本的な検索の実装から、フィルタリングやエラーハンドリングといった高度な機能まで、DeepSeek R1は、ユーザーに合わせた検索体験を提供するための堅牢なプラットフォームを用意しています。その能力を試してみて、アプリの使いやすさをさらに高い次元へ引き上げましょう。

ボイラープレートのプロンプトを書き続けない

セットアップを省き、完全なAIアーキテクチャのパターンでコードを10倍速く書きたい場合は、私のSenior React Developer AI Cookbook(19ドル)を手に取ってください。Server Actionのプロンプトライブラリ、UIコンポーネント生成のループ、ハイドレーションのデバッグ戦略が含まれています。

Apollo AI Store で開発者向けプロダクトをすべて(10個以上)見る | もしくは @ApolloSniper_Bot でSolanaトークンを無料でスナイプ。