前回はOpenAI APIを導入して、実際にAPIを呼び出せるところまで確認しました。
今回は、実際のTransFlowのSegmentをOpenAIに渡して、翻訳する処理を実装していきます。
OpenAI プロンプト
- OpenAI APIは、
inputのなかにプロンプト+処理するデータを入れて指示するイメージです。- 実際にAIを使っているのとほぼ同じ感覚です。
- 例)「次の文章を韓国語に翻訳してください。」+翻訳したい文章(データ)
クライアント・サーバー
- OpenAI API Keyを使用するコードは、クライアントページには作成しないこと。
"use client"が書いてあるページでは、OpenAI SDKを直接使用しない。- クライアントページでは、
segmentIdのような必要なデータだけをAPIサーバーに送る。 - 例)サーバー側の
/api/translateでは、次のような処理を行う。segmentIdを受け取る- PrismaでSegmentを取得する
segment.sourceTextを取得する- OpenAIを呼び出す
- 翻訳結果を受け取る
- API Keyはサーバーの環境変数(
OPENAI_API_KEY)から使用する。
TransFlowの処理の流れ
現在開発中のTransFlowのAI翻訳の流れです。
- Segmentページ
- [AI翻訳] ボタン
- segmentIdを送信
- /api/translate
- PrismaからSegmentを取得
- sourceTextを取得
- OpenAIにプロンプト+sourceTextを渡す
- 翻訳結果を受け取る
コード例:
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」と考えるよりも、input に何をしてほしいのかという指示(プロンプト)と、処理するテキストを一緒に渡すと考えると、実装のイメージがしやすくなります。
終わりに
OpenAI APIを使うことは難しいのではないかと思いましたが、意外と簡単でいつも使ってるAIとあまり変わりがないことに気付きました。
なんでも挑戦する前が一番怖くて難しくて、少し面倒と思ったりしますがやってみるとなんとかなりますねw
皆さんもぜひ!OpenAIのAPIを使ってみて下さい☺️
