OpenAI Python APIライブラリでGemini Proを呼び出してみた【Gemini-OpenAI-Proxy】

![ワンパンでOpenAI APIをGemini Proにつなぐ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2818580/23b5fb3e-ae27-857e-1c71-298ce0f40a5f.png)


OpenAIのPython APIライブラリを使用して、Gemini APIを呼び出す過程は、初心者にとっても分かりやすく、かつ実践的な学びを提供します。この記事では、具体的なコードブロックを使用して、その手順を詳しく解説していきます。Pythonの基礎知識があれば、このプロセスを通じて、AIとのインタラクションや、より複雑なプログラミング概念に対する理解を深めることができるでしょう。


## 初歩から学ぶAPI呼び出し 

APIとは、アプリケーションプログラミングインターフェースの略で、ソフトウェア間で機能やデータを共有するための枠組みです。OpenAIのAPIを利用することで、人工知能技術を自分のプロジェクトに組み込むことが可能になります。

環境構築はこちらから

https://hamaruki.com/connect-openai-api-to-gemini-pro-in-one-click/

---

こちらの記事もおすすめです

https://hamaruki.com/try-running-pokellmon/

https://hamaruki.com/japanese-version-of-the-wiki-of-ai-agents-virtual-software-development-company-chatdev/

## 基本的な環境設定 

まずは、Pythonの環境にOpenAIライブラリを導入しましょう。以下のコードブロックでは、必要なライブラリのインポートから始めます。

```python
from IPython.display import display, Image, Audio
import cv2  # OpenCVを使用してビデオを読み込むため
import base64
import time
import os
import requests
import openai

YOUR_GOOGLE_AI_STUDIO_API_KEY = "XXXXXXXXXXXXXXXXXXXXXX"
```



この段階で、`cv2`や`openai`など、必要なライブラリをインポートしています。`cv2`はOpenCVライブラリで、画像やビデオの処理に使われます。`openai`ライブラリは、OpenAIのAPIをPythonから簡単に利用するためのものです。

### OpenAIクライアントの設定 

次に、OpenAI APIを呼び出すためのクライアントを設定します。

```python
from openai import OpenAI
import httpx
client = OpenAI(api_key = YOUR_GOOGLE_AI_STUDIO_API_KEY)

base_url = httpx.URL("http://localhost:8080/v1/")
client._base_url= base_url
```



ここで、`OpenAI`クラスをインスタンス化し、APIキーを設定しています。`httpx.URL`を使用して、APIのベースURLを指定しています。これにより、ローカル環境でAPIサーバーに接続する準備が整います。

### 画像解析のリクエスト 

Gemini APIを使用して、画像内の内容に関する情報を取得する例を見てみましょう。

```python
response = client.chat.completions.create(
  model="gpt-4-vision-preview",
  messages=[
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "What’s in this image?"},
        {
          "type": "image_url",
          "image_url": {
            "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
          },
        },
      ],
    }
  ],
  max_tokens=300,
)

print(response.choices[0])
```

>Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content=' The image shows a boardwalk through a lush green field on a bright day with blue skies.', role='assistant', function_call=None, tool_calls=None))

このコードは、指定した画像URLに含まれる内容についての質問をOpenAIに投げかけ、その回答を取得しています。ここで使用される`gpt-4-vision-preview`モデルは、画像解析に特化したモデルです。

### プログラミング概念の説明 

最後に、もう一つの応用例として、プログラミングの概念を説明するためのリクエストを見てみましょう。

```python
completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."},
    {"role": "user", "content": "Compose a poem that explains the concept of recursion in programming."}
  ]
)

print(completion.choices[0].message)
```

>ChatCompletionMessage(content="In the realm of code, where logic weaves,\nRecursion's dance, a concept that cleaves.\nA function, bold, within itself it calls,\nTo unravel problems, breaking down their walls.\n\nLike Russian dolls, it delves within,\nEach layer solved, new challenges begin.\nWith grace and skill, it solves its own,\nRevealing patterns, elegantly grown.\n\nA fractal's charm, in code expressed,\nRepeating patterns, echoes intertwined, suggest\nA tapestry of logic, intricate and grand,\nRecursion's power, ever in demand.\n\nFrom sorting lists to solving mazes vast,\nRecursion's touch, a marvel unsurpassed.\nIt climbs the tree, or searches deep,\nIts elegance, a programmer's keep.\n\nYet caution whispers, lest we stray,\nFor infinite loops, a treacherous way.\nWith care we tread, and boundaries define,\nTo tame recursion's power, so divine.\n\nSo let us marvel at this tool so grand,\nRecursion's dance, a symphony unplanned.\nIn the realm of code, it weaves its spell,\nA marvel of logic, stories untold, it tells.", role='assistant', function_call=None, tool_calls=None)

## まとめ

以上、OpenAIのPython APIライブラリを使用して、Geminiを呼び出す基本的な手順を解説しました。このプロセスを通じて、AI技術を自身のプロジェクトに応用する方法の理解を深めることができるでしょう。また、APIを使ったデータの取得や、プログラミング概念のクリエイティブな説明など、様々な応用例を体験することが可能です。

## リポジトリ

https://github.com/Sunwood-ai-labs/gemini-openai-proxy