OpenAIのResponses APIを試してみる

先にこちらを試していましたが、本丸のResponses APIを試します。[Computer use](https://platform.openai.com/docs/guides/tools-computer-use)は準備が大変なので割愛してます。画像分析、Web検索、会話履歴をカバーします

https://qiita.com/taka_yayoi/items/3161baddac7c745dcef9

https://qiita.com/taka_yayoi/items/2525b440ceb4b6918363

```py
%pip install -U openai-agents openai
# %pip install -U mlfow
%restart_python
```

[MLflow Tracing](https://mlflow.org/docs/latest/tracing)はまだ動きませんでした。

```py
#import mlflow
#mlflow.openai.autolog()
```


```py
import os
os.environ["OPENAI_API_KEY"] = dbutils.secrets.get(scope="demo-token-takaaki.yayoi", key="openai_api_key")
```

# [最もシンプルな例](https://platform.openai.com/docs/quickstart?api-mode=responses)

```py
from openai import OpenAI
client = OpenAI()

response = client.responses.create(
    model="gpt-4o-mini",
    input="ユニコーンについての一文の寝る前の物語を書いてください。"
)

print(response.output_text)
```
```
昔々、星の輝く夜空の下、静かな森に一頭のユニコーンが住んでいました。このユニコーンは、優しい心と美しい角を持ち、森の動物たちと仲良く暮らしていました。毎晩、自分の友達に夢を叶える魔法をかけてあげるのが、ユニコーンの楽しみでした。

ある晩、ユニコーンは、一匹の小さなウサギが不安そうにしているのを見つけました。「どうしたの？」とユニコーンが尋ねると、ウサギは「夜空の星々がとても遠くて、僕もあれを見たいけど、届かない」と言いました。

ユニコーンは微笑み、「それなら、一緒に星の下で夢を見よう」と言いました。そして彼は光り輝く角を空に向けてかざし、ウサギの目の前に美しい星空を映し出しました。ウサギは目を輝かせ、想像の中で星に手が届くように飛び跳ねました。

その夜、ユニコーンとウサギは夢の中で一緒に星をすくい上げ、自分たちだけの希望の星を作ることができました。そして、夜が明けるとウサギは、ユニコーンに感謝の気持ちを伝えました。「君と一緒に夢を見ることができて、本当に幸せだったよ。」

ユニコーンは優しく微笑み、こう言いました。「夢はいつでも心の中にあります。君が信じる限り、星は決して遠くないよ。」

そして彼らは、月明かりの下で新しい友達になり、森の美しい思い出を胸に、それぞれの眠りにつきました。おやすみなさい。
```

# [画像の分析](https://platform.openai.com/docs/quickstart?api-mode=responses#analyze-image-inputs)

```py
from openai import OpenAI
client = OpenAI()

response = client.responses.create(
    model="gpt-4o-mini",
    input=[
        {"role": "user", "content": "この画像に写っているチームは何ですか？"},
        {
            "role": "user",
            "content": [
                {
                    "type": "input_image",
                    "image_url": "https://upload.wikimedia.org/wikipedia/commons/3/3b/LeBron_James_Layup_%28Cleveland_vs_Brooklyn_2018%29.jpg"
                }
            ]
        }
    ]
)

print(response.output_text)
```
```
この画像に写っているチームは、クリーブランド・キャバリアーズ（Cleveland Cavaliers）とブルックリン・ネッツ（Brooklyn Nets）のようです。特に、クリーブランド・キャバリアーズが選手として見えています。
```

合ってます。

![](https://upload.wikimedia.org/wikipedia/commons/3/3b/LeBron_James_Layup_%28Cleveland_vs_Brooklyn_2018%29.jpg)

# [Web検索](https://platform.openai.com/docs/quickstart?api-mode=responses#extend-the-model-with-tools)

```py
from openai import OpenAI
client = OpenAI()

response = client.responses.create(
    model="gpt-4o-mini",
    tools=[{"type": "web_search_preview"}],
    input="今日のポジティブなニュースストーリーはなんですか？"
)

print(response.output_text)
```
```
2025年3月13日現在、ポジティブなニュースとして以下のトピックが挙げられます。

1. **東日本大震災から14年目の取り組み**  
2025年3月11日、東日本大震災から14年を迎え、長野県上田市の社会福祉法人「まるこ福祉会」が震災の教訓や被災地の思いをつなぐ集いを開催しました。この集いでは、被災者やボランティアの話を聞き、命や支え合いの大切さを再認識する機会が提供されました。 ([news.ntv.co.jp](https://news.ntv.co.jp/category/society/ts8eca5f86af654c8ba5315c11da2c44b0?utm_source=openai))

2. **福島県産食品の輸入規制緩和の進展**  
福島県知事は、震災・原発事故直後に55の国・地域で課せられていた福島県産食品の輸入規制が、現在では12の国・地域まで減少したことを報告しました。これは、政府や関係者の努力の成果と評価されています。 ([pref.fukushima.lg.jp](https://www.pref.fukushima.lg.jp/site/chiji/kaiken20230313.html?utm_source=openai))

3. **カンボジアの観光業の回復**  
カンボジア民間航空局（SSCA）は、2024年の国際空港利用者数が前年対比39.8％増の約565万人に達したと発表しました。これは、直行便や路線の拡充、観光省などの取り組みが功を奏した結果とされています。 ([beinsighted.com](https://beinsighted.com/jp/main/article/2025011101-2/?utm_source=openai))

これらのニュースは、地域の復興や国際的な協力、観光業の回復など、前向きな動きを示しています。 
```

マークダウンなので以下のようにレンダリングされます。

2025年3月13日現在、ポジティブなニュースとして以下のトピックが挙げられます。

1. **東日本大震災から14年目の取り組み**  
2025年3月11日、東日本大震災から14年を迎え、長野県上田市の社会福祉法人「まるこ福祉会」が震災の教訓や被災地の思いをつなぐ集いを開催しました。この集いでは、被災者やボランティアの話を聞き、命や支え合いの大切さを再認識する機会が提供されました。 ([news.ntv.co.jp](https://news.ntv.co.jp/category/society/ts8eca5f86af654c8ba5315c11da2c44b0?utm_source=openai))

2. **福島県産食品の輸入規制緩和の進展**  
福島県知事は、震災・原発事故直後に55の国・地域で課せられていた福島県産食品の輸入規制が、現在では12の国・地域まで減少したことを報告しました。これは、政府や関係者の努力の成果と評価されています。 ([pref.fukushima.lg.jp](https://www.pref.fukushima.lg.jp/site/chiji/kaiken20230313.html?utm_source=openai))

3. **カンボジアの観光業の回復**  
カンボジア民間航空局（SSCA）は、2024年の国際空港利用者数が前年対比39.8％増の約565万人に達したと発表しました。これは、直行便や路線の拡充、観光省などの取り組みが功を奏した結果とされています。 ([beinsighted.com](https://beinsighted.com/jp/main/article/2025011101-2/?utm_source=openai))

これらのニュースは、地域の復興や国際的な協力、観光業の回復など、前向きな動きを示しています。 

# [会話の履歴](https://platform.openai.com/docs/guides/conversation-state?api-mode=responses)

[こちら](https://platform.openai.com/docs/guides/responses-vs-chat-completions#other-noteworthy-differences)に以下の記述がありました。

> 会話の状態: Chat Completionsでは会話の状態を自分で管理しなくてはなりませんが、Responsesには、長期間の会話の助けとなる`previous_response_id`があります。

こちらに詳細な説明があります。

https://platform.openai.com/docs/guides/conversation-state?api-mode=responses

会話をスタートします。

```py
from openai import OpenAI
client = OpenAI()

response = client.responses.create(
    model="gpt-4o-mini",
    input="こんにちは。弥生 隆明と言います。"
)

print(response.output_text)
```
```
こんにちは、弥生 隆明さん！お話しできて嬉しいです。今日はどんなことについてお話ししましょうか？
```

`previous_response_id`に上のレスポンスのIDを指定することで会話履歴にアクセスしたやり取りを行うことができます。

```py
response = client.responses.create(
    model="gpt-4o-mini",
    input="私の名前は",
    previous_response_id=response.id,
)

print(response.output_text)
```

```py
response = client.responses.create(
    model="gpt-4o-mini",
    input="私は猫と鳥が好きです。ジョギングも基本毎日やっています。お酒も好きですが控えるようにしています。",
    previous_response_id=response.id,
)

print(response.output_text)
```
```
猫と鳥が好きなんですね！どんな猫や鳥を飼っているのですか？ジョギングも毎日されているとは素晴らしいですね。お酒を控えるのは健康にも良い選択ですね。平日や週末はどう過ごされているんですか？
```

```py
response = client.responses.create(
    model="gpt-4o-mini",
    input="平日は朝にジョギング、その後は在宅で仕事しています。週末は長距離のジョギングをして夜は食事に一ったりしています。",
    previous_response_id=response.id,
)

print(response.output_text)
```
```
規則正しい生活をされているんですね！朝のジョギングは気持ちいいでしょうね。週末の長距離ジョギングは素晴らしいです。どちらか特にお気に入りのコースや風景があれば教えてください。また、食事にはどんなところに行くのが好きですか？
```

なんだか、無限に会話してしまいそう。一旦ここで打ち切ります。

```py
response = client.responses.create(
    model="gpt-4o-mini",
    input="私について教えてください。",
    previous_response_id=response.id,
)

print(response.output_text)
```
```
もちろんです！弥生 隆明さんは猫と鳥が好きで、毎日ジョギングをしている健康に気を使う方ですね。また、お酒を控える意識も持っていることから、生活に気を付けているようです。平日は在宅で仕事をし、週末は長距離ジョギングや食事を楽しむ充実した日常を送っている印象があります。趣味や興味をお持ちのようで、バランスの取れたライフスタイルを大切にされているのが伝わります。

他にお話ししたいことや深掘りしたいテーマがあれば教えてください！
```

これはお手軽です。

個人的感想ですが、モデルプロバイダーであるOpenAIがエージェントの活用を前提としたResponses APIを提供したということは、それだけエージェントの活用にbetしているのだと思いました。[LangChainも翌日にはResponses APIに対応](https://qiita.com/taka_yayoi/items/2525b440ceb4b6918363)していますし、エージェント界隈のモーメントがさらに強まるのではないかと期待しています。これによって、RAGの時のようにユースケースの具体化と技術の進歩が互いに刺激し合う流れが出てくるのではないでしょうか。

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)