【Next.js】OpenAI APIを導入して実際に呼び出してみた|日本語→韓国語へ翻訳

OpenAI APIを使ってみた Programming
OpenAIのAPIを使って翻訳をしてみました。

前回はOpenAI APIを導入して、実際にAPIを呼び出せるところまで確認しました。

今回は、実際のTransFlowのSegmentをOpenAIに渡して、翻訳する処理を実装していきます。

OpenAI プロンプト

  • OpenAI APIは、input のなかにプロンプト+処理するデータを入れて指示するイメージです。
    • 実際にAIを使っているのとほぼ同じ感覚です。
    • 例)「次の文章を韓国語に翻訳してください。」+翻訳したい文章(データ)

クライアント・サーバー

  • OpenAI API Keyを使用するコードは、クライアントページには作成しないこと。
  • "use client" が書いてあるページでは、OpenAI SDKを直接使用しない。
  • クライアントページでは、segmentId のような必要なデータだけをAPIサーバーに送る。
  • 例)サーバー側の /api/translate では、次のような処理を行う。
    1. segmentId を受け取る
    2. PrismaでSegmentを取得する
    3. segment.sourceText を取得する
    4. OpenAIを呼び出す
    5. 翻訳結果を受け取る
  • API Keyはサーバーの環境変数(OPENAI_API_KEY)から使用する。

TransFlowの処理の流れ

現在開発中のTransFlowのAI翻訳の流れです。

  1. Segmentページ
  2. [AI翻訳] ボタン
  3. segmentIdを送信
  4. /api/translate
  5. PrismaからSegmentを取得
  6. sourceTextを取得
  7. OpenAIにプロンプト+sourceTextを渡す
  8. 翻訳結果を受け取る

コード例:

import { authOptions } from "@/lib/auth";
import prisma from "@/lib/prisma";
import { getServerSession } from "next-auth";
import { NextResponse } from "next/server";
import OpenAI from "openai";

export async function POST(request: Request) {
    const openai = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY,
    });
    
    //..以下省略(セッション確認や必要なセグメントを取得など)


    // AI翻訳の処理(inputにプロンプト入力)
    const response = await openai.responses.create({
    model: "gpt-5.6-terra",
    input: `
    次の文章を韓国語に翻訳してください。
    翻訳結果だけを出力してください。

    ${segment.sourceText}
    `,
    });

    console.log("OpenAI Response:", response.output_text);

    // ..以下省略(OpenAI APIを使用して翻訳を取得し、データベースに保存する)

    return NextResponse.json(
        {
            message: "Translation request received",
            segment,
            translatedText: response.output_text
        }, {status: 200}
    )

}

結果例:

  • 赤い枠の「よろしくお願いします!」を翻訳します。
OpenAI APIの例
  • 翻訳結果「잘 부탁드립니다!」と翻訳されました。
OpenAI APIの結果

OpenAIを単純な「翻訳API」と考えるよりも、input に何をしてほしいのかという指示(プロンプト)と、処理するテキストを一緒に渡すと考えると、実装のイメージがしやすくなります。

終わりに

OpenAI APIを使うことは難しいのではないかと思いましたが、意外と簡単でいつも使ってるAIとあまり変わりがないことに気付きました。

なんでも挑戦する前が一番怖くて難しくて、少し面倒と思ったりしますがやってみるとなんとかなりますねw

皆さんもぜひ!OpenAIのAPIを使ってみて下さい☺️

タイトルとURLをコピーしました