1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenAI の「Conversations API + Responses API」で会話を扱う処理を簡易に試す【Node.js】

Last updated at Posted at 2025-08-25

はじめに

以下の公式のポストに出てきている「Conversations API + Responses API」で、会話を扱う処理を行うという話です。それを、ごく簡単な実装で試してみます。

公式ページの情報

上記のポストに書かれた 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 を組み合わせて会話を扱う、という感じになるようです。

2025-08-25_22-42-12.jpg

実際に試していく

公式の情報を見ていきつつ、Conversations API を実際に試していきます。

情報を見てみる

Conversations API に関する情報

Conversations API のページを見てみます。

●API Reference - OpenAI API
 https://platform.openai.com/docs/api-reference/conversations/create

2025-08-25_22-47-14.jpg

右上には以下のサンプルコードが提示されていました。

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
2025-08-25_22-52-33.jpg

そして、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 の実行結果

これを実行した結果、以下のレスポンスが得られるのを確認できました。

2025-08-25_23-16-53.jpg

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);

得られた結果は以下で、この処理だと会話の中身までは取り出せていません。

2025-08-25_23-26-12.jpg

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 のダッシュボードで、先ほどの会話のデータを確認してみました。以下のページを開くと、お試しで 2回 API を使ってみた内容が表示されているのが確認できました。

●Logs - OpenAI API
 https://platform.openai.com/logs?api=conversations

2025-08-25_23-53-08.jpg

おわりに

とりあえず、Conversations API で 1往復分のやりとりのみを扱う、ということを試してみました。

とりあえず手探りでやってみたという感じなので、さらに情報を見ていったりなどしつつ、「前の会話を呼び出して、その続きのやりとりをする」ということなども試せればと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?