はじめに
以下の公式のポストに出てきている「Conversations API + Responses API」で、会話を扱う処理を行うという話です。それを、ごく簡単な実装で試してみます。
With the Conversations API, you can now store context from Responses API calls (messages, tool calls, tool outputs, and other data). Easily render past chats, then let your users pick up where they left off (just like in ChatGPT).https://t.co/B1QegYtXfS pic.twitter.com/zSpMUhl4wV
— OpenAI Developers (@OpenAIDevs) August 21, 2025
公式ページの情報
上記のポストに書かれた URL を見に行ってみます。見に行ったページ(以下)の中で「OpenAI APIs for conversation state > Using the Conversations API」の部分を見てみます。
●Conversation state - OpenAI API
https://platform.openai.com/docs/guides/conversation-state?api-mode=responses
具体的には以下の部分になるのですが、ここには「The Conversations API works with the Responses API ...」と書かれています。どうやら、Responses API を使った処理と Conversations API を組み合わせて会話を扱う、という感じになるようです。
実際に試していく
公式の情報を見ていきつつ、Conversations API を実際に試していきます。
情報を見てみる
Conversations API に関する情報
Conversations API のページを見てみます。
●API Reference - OpenAI API
https://platform.openai.com/docs/api-reference/conversations/create
右上には以下のサンプルコードが提示されていました。
import OpenAI from "openai";
const client = new OpenAI();
const conversation = await client.conversations.create({
metadata: { topic: "demo" },
items: [
{ type: "message", role: "user", content: "Hello!" }
],
});
console.log(conversation);
上記では、自分で作成した「メタデータ・ユーザーの発話のセット」を、以下に書かれた「Conversation object」に格納するというもののようです。
https://platform.openai.com/docs/api-reference/conversations/object
そして、API を使った処理のレスポンスとして、例えば以下のような内容が得られるようです。
{
"id": "conv_123",
"object": "conversation",
"created_at": 1741900000,
"metadata": {"topic": "demo"}
}
「Responses API」との組み合わせを試す
これを、今年 3月のリリース時から試している「Responses API」と組み合わせてみます。
●Node.js で OpenAI の 新API(Responses API)をシンプルに試す - Qiita
https://qiita.com/youtoy/items/12749481635230fae586
以下のシンプルな 1往復のやりとりを、上記の Conversations API で扱う、というようなことを試します。
import OpenAI from "openai";
process.loadEnvFile("./development.env");
const client = new OpenAI();
const response = await client.responses.create({
model: "gpt-4o",
input: "あなたは誰?",
});
console.log(response.output_text);
今回のお試し用のコード1
お試し用に作ってみたコードは、以下のとおりです。Responses API で GPT-5 のモデルを使った 1往復分のやりとりを行い、それを Conversation object に格納する、というようなものです。
import OpenAI from "openai";
const client = new OpenAI();
function extractTextFromResponse(r) {
return r?.output_text ?? null;
}
async function main() {
try {
const userPrompt = "あなたは誰?";
const resp = await client.responses.create({
model: "gpt-5",
input: userPrompt,
});
const assistantText =
extractTextFromResponse(resp) ?? "(応答を取得できませんでした)";
console.log("assistant text:", assistantText);
const conversation = await client.conversations.create({
metadata: { topic: "demo" },
items: [
{
type: "message",
role: "user",
content: [{ type: "input_text", text: userPrompt }],
},
{
type: "message",
role: "assistant",
content: [{ type: "output_text", text: assistantText }],
},
],
});
console.log("Saved conversation id:", conversation?.id ?? "(idなし)");
console.log("Conversation object:", conversation);
} catch (err) {
console.error("error:", err);
process.exitCode = 1;
}
}
main();
items
の部分は、もっとうまく Responses API のレスポンスを流し込む方法がありそうな気もしつつ、とりあえず版という感じのものを作ってみました。
お試し1 の実行結果
これを実行した結果、以下のレスポンスが得られるのを確認できました。
Conversations API に関するページをさらに見ていくと、会話の検索や内容のアップデート、会話の削除なども行えるようです。
Conversations API をさらに使う
Conversations API をさらに使ってみます。Conversations API の説明中の、会話の検索を試してみます。サンプルコードとして、以下が示されているものです。
import OpenAI from "openai";
const client = new OpenAI();
const conversation = await client.conversations.retrieve("conv_123");
console.log(conversation);
上記の ID の部分を自分が先ほど得た ID にしたものに変えて、処理を実行してみました。
import OpenAI from "openai";
const client = new OpenAI();
const myId = "【自分が先ほど得たID】";
const conversation = await client.conversations.retrieve(myId);
console.log(conversation);
得られた結果は以下で、この処理だと会話の中身までは取り出せていません。
Conversations API で会話の中身を得る
会話の内容を得るには「List items」の部分の処理を使う必要があるようです。
そこに書かれていたサンプルコードを少し書きかえた、以下の内容で処理を試してみます。
import OpenAI from "openai";
const client = new OpenAI();
const myId = "【自分が先ほど得たID】";
const items = await client.conversations.items.list(myId, { limit: 10 });
// console.log(items.data);
console.log(JSON.stringify(items.data, null, 2));
その結果、先ほどの Responses API での 1往復のやりとりを、Conversations API で取り出すというようなことができました。
#OpenAI の Responses API での 1往復のやりとりを、Conversations API で会話のセットとして保持して、それを Conversations API で呼び出す、
— you (@youtoy) August 25, 2025
みたいな処理ができたっぽい! pic.twitter.com/CzgAL0Mjsk
ダッシュボードで会話のデータを確認してみる
最後に、OpenAI のダッシュボードで、先ほどの会話のデータを確認してみました。以下のページを開くと、お試しで 2回 API を使ってみた内容が表示されているのが確認できました。
●Logs - OpenAI API
https://platform.openai.com/logs?api=conversations
おわりに
とりあえず、Conversations API で 1往復分のやりとりのみを扱う、ということを試してみました。
とりあえず手探りでやってみたという感じなので、さらに情報を見ていったりなどしつつ、「前の会話を呼び出して、その続きのやりとりをする」ということなども試せればと思います。