{}const=>[]async()letfn</>var
開発AI

アーキテクチャを書き換えずにプロジェクトにAIを実装する方法

既存のアプリケーションに人工知能を統合するための実用的なガイド。プロジェクトのアーキテクチャを変更することなく、APIを介してAI機能を追加し、サービスラッパーを作成し、キャッシュとエラー処理を設定する方法を学びます。初心者向けのPHPとJavaScriptのステップバイステップのコード例。

К

Kodik

著者

2分で読める

あなたはプロジェクトに取り組んでいて、突然、「ここにAIを追加したらどうだろう?」というアイデアが浮かびます。素晴らしいアイデアですが、すぐに恐怖が生じます。すべてを書き換え、アーキテクチャを変更し、リファクタリングに数ヶ月を費やす必要があります。ほとんどの場合、これは必要ありません。

現代の人工知能ツールは、既存のアプリケーションに簡単に統合できるように設計されています。正しく、そして苦労せずにそれを行う方法を見てみましょう。

AIのタスクを定義する

何かを実装する前に、そもそもなぜAIが必要なのかを理解する必要があります。流行に乗って追加するのではなく、ユーザーの特定の問題を解決する必要があります。

AIが本当に役立つ典型的なタスク:商品説明のテキスト生成、コンテンツの自動分類、データベースのスマート検索、ユーザーへの推奨、画像処理、顧客サポートのためのチャットボット、レビューのトーン分析。

まずは1つのタスクを選択してください。すべての場所に一度にAIを実装しようとしないでください。これは混乱と過剰な複雑さにつながります。

🔥 10万人以上の学生が参加中

理論を読むのに疲れた?
コーディングの時間だ!

Kodik — 実践でプログラミングを学ぶアプリ。AIメンター、インタラクティブなレッスン、実際のプロジェクト。

🤖 AI 24時間
🎓 修了証
💰 無料
🚀 始める
今日参加

ローカルモデルの代わりにAPIを使用する

プロジェクトにAIを追加する最も簡単な方法は、既製のAPIを使用することです。ニューラルネットワークの仕組みを理解したり、モデルをトレーニングしたり、グラフィックスカードを搭載した強力なサーバーを購入したりする必要はありません。

人気のあるソリューションには、テキスト処理のためのOpenAI API、代替としてのAnthropic Claude API、画像認識のためのGoogle Cloud Vision、写真とビデオの分析のためのAWS Rekognition、さまざまなタスクのためのHugging Face Inference APIなどがあります。

API の操作は、通常の HTTP リクエストのように見えます。以下は、PHPの簡単な例です。

function generateDescription($productName) {
    $apiKey = getenv('OPENAI_API_KEY');
    
    $data = [
        'model' => 'gpt-4',
        'messages' => [
            [
                'role' => 'user',
                'content' => "Write a short description of the product: $productName"
            ]
        ]
    ];
    
    $ch = curl_init('https://api.openai.com/v1/chat/completions');
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json'
    ]);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    $result = json_decode($response, true);
    return $result['choices'][0]['message']['content'];
}

JavaScriptでは、fetchを使用するとさらに簡単です。関数を呼び出すだけで結果が得られます。魔法もアーキテクチャの変更もありません。

個別のサービスラッパーを作成する

プロジェクト全体で AI を操作するロジックを分散させないように、API とのやり取りを担当する個別のクラスまたはモジュールを作成します。

PHPの構造の例:

class AIService {
    private $apiKey;
    private $apiUrl;
    
    public function __construct() {
        $this->apiKey = getenv('OPENAI_API_KEY');
        $this->apiUrl = 'https://api.openai.com/v1/chat/completions';
    }
    
    public function generateText($prompt, $maxTokens = 150) {
        // APIリクエストのロジック
        return $this->makeRequest($prompt, $maxTokens);
    }
    
    public function analyzeImage($imageUrl) {
        // 画像を操作するための別の方法
    }
    
    private function makeRequest($prompt, $maxTokens) {
        // HTTPリクエストの一般的なロジック
    }
}

これで、プロジェクトのどこでもこのサービスを使用できるようになりました。後でAIプロバイダーを変更したり、処理ロジックを変更したりする場合は、1か所でのみコードを編集する必要があります。

キャッシュを追加する

APIへのリクエストにはコストと時間がかかります。ユーザーが同じ情報を2回要求した場合、再びAIにアクセスする意味はありません。キャッシュされた結果を返すことができます。

Redisを使用した簡単な例:

class AIService {
    private $redis;
    
    public function generateText($prompt, $maxTokens = 150) {
        $cacheKey = 'ai_' . md5($prompt . $maxTokens);
        
        // キャッシュをチェックしています
        if ($cached = $this->redis->get($cacheKey)) {
            return $cached;
        }
        
        // キャッシュにない場合は、リクエストを送信します
        $result = $this->makeRequest($prompt, $maxTokens);
        
        // 1時間保存します
        $this->redis->setex($cacheKey, 3600, $result);
        
        return $result;
    }
}

Redisを持っていない場合でも、ファイルキャッシュまたはデータベースを使用できます。重要なのは、余分なクエリを実行しないことです。

エラーを正しく処理する

APIがダウンしたり、リクエストの制限がなくなったり、インターネットが消えたりする可能性があります。AIが利用できない場合でも、アプリケーションは正しく動作する必要があります。

常にtry-catchでクエリをラップし、タイムアウトを設定し、スペアオプションを提供します。AIが商品の説明を生成できなかった場合は、標準テンプレートを表示するか、フィールドを空のままにすることができますが、アプリケーションはクラッシュしないはずです。

public function generateText($prompt, $maxTokens = 150) {
    try {
        $result = $this->makeRequest($prompt, $maxTokens);
        return $result;
    } catch (Exception $e) {
        // エラーを記録します
        error_log('AI API Error: ' . $e->getMessage());
        
        // デフォルト値を返します
        return "Description temporarily unavailable";
    }
}

重いタスクにはキューを使用する

たとえば、大きな画像を分析したり、詳細なテキストを生成したりするなど、処理に時間がかかる場合は、ユーザーを待たせないでください。タスクをキューに送信し、非同期で処理します。

PHPでは、Laravel QueueまたはSymfony Messengerがこれに適しており、Node.jsではBullまたはRabbitMQを使用できます。タスクが完了すると、ユーザーに通知されます。

// キューに送信します
dispatch(new GenerateProductDescription($productId));

// ワーカーで処理します
class GenerateProductDescription implements ShouldQueue {
    public function handle(AIService $ai) {
        $product = Product::find($this->productId);
        $description = $ai->generateText("Description for: " . $product->name);
        
        $product->update(['ai_description' => $description]);
    }
}

結果をデータベースに保存する

毎回コンテンツを生成する必要はありません。AIが商品説明を作成した場合は、データベースに保存します。これにより、アプリケーションの動作が速くなり、API のコストを節約できます。

テーブルに新しいフィールド(ai_generated_descriptionなど)を追加し、そこに結果を書き込みます。次のクエリでは、データベースから取得するだけです。

ユーザーにコントロールを与える

AIの結果は必ずしも完璧ではありません。ユーザーが生成されたコンテンツを編集または却下できるようにしてください。

「説明を生成」ボタンと、その横に編集フィールドを追加できます。ユーザーはAIからの提案を見て、それを改善することができます。これは、制御なしの完全自動生成よりも優れています。

小さなことから始めましょう

アプリケーションのすべての部分に AI をすぐに実装しようとしないでください。1 つの小さな機能を選択し、実装し、実際のユーザーでテストします。

すべてがうまく機能している場合は、機能を拡張します。何かがうまくいかなかった場合、時間を最小限に抑え、変更をすばやく元に戻すことができます。

予算を管理する

APIは無料ではありません。OpenAI、Claude、その他のサービスは、リクエストごとに料金を請求します。制限を設定し、コストを監視し、アラートを設定します。

1 日あたりのユーザー 1 人あたりのリクエスト数を制限したり、人気のあるリクエストをより積極的にキャッシュしたりできます。重要なのは、AIの導入が何千ドルもの予期しない請求につながらないことです。

データのプライバシーを尊重する

サードパーティのAPIにデータを送信すると、データはサーバーから出ていきます。ユーザーの個人データ、パスワード、支払い情報を送信しないようにしてください。

APIプロバイダーのユーザー契約を読み、GDPRまたはその他のデータ保護法の要件がプロジェクトに適用される場合は、それらを遵守してください。

段階的に導入する

既存のコードを変更することなく、AI機能を次々に追加できます。今日、説明の自動生成、1か月後 — スマート検索、さらに1か月後 — 推奨システム。

このアプローチにより、変更に適応し、ミスから学び、開発チームに負担をかけないようにすることができます。アーキテクチャはそのままですが、アプリケーションはよりスマートになります。

既存のプロジェクトにAIを導入することは、システムを完全に再構築することではありません。これは、ユーザーにとって製品をより良くする新機能を慎重に追加することです。小さなことから始め、既製のツールを使用し、品質と予算を監視してください。それがどれほど簡単であるかに驚かれるでしょう。

プラットフォームでさまざまなプログラミング言語を学ぶことができます コディック — 初心者向けの構造化されたコースがあります。

そして、私たちの Telegramチャンネルプログラマーのフレンドリーなコミュニティが集まり、いつでもアドバイスをしたり、経験を共有したりする準備ができています!

🎯先延ばしをやめよう

記事は気に入った?
実践の時間だ!

Kodikでは読むだけでなく、すぐにコードを書く。理論 + 実践 = 本当のスキル。

即座に実践
🧠AIがコードを説明
🏆修了証

登録不要 • カード不要