AIパーソナル・ラーニング
と実践的なガイダンス
TRAE

GeminiモデルAPIはOpenAIフォーマットと互換性がありますか?

利用する ジェミニ シリーズモデルは、cURLコマンドを実行することで、APIを素早くテストすることができる:

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[{"text": "Explain how AI works"}]
}]
}'

 

ジェミニAPI OpenAIと同じフォーマットではないが、ジェミニが導入したのは OpenAI対応フォーマット.


3行のコードを更新し、Gemini APIキーを使用することで、REST APIだけでなく、OpenAIライブラリ(Python、TypeScript/JavaScript)を使用してGeminiモデルにアクセスすることができます。

パイソン

from openai import OpenAI
client = OpenAI(
api_key="GEMINI_API_KEY",
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
response = client.chat.completions.create(
model="gemini-1.5-flash",
n=1,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": "Explain to me how AI works"
}
]
)
print(response.choices[0].message)

 

ストリーミング応答のGemini APIサポート

from openai import OpenAI
client = OpenAI(
api_key="GEMINI_API_KEY",
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
response = client.chat.completions.create(
model="gemini-1.5-flash",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta)

 

コール機能

関数コールを使用すると、生成モデルから構造化されたデータ出力をより簡単に取得できます。Gemini APIは関数コールをサポートしています。.

from openai import OpenAI
client = OpenAI(
api_key="GEMINI_API_KEY",
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. Chicago, IL",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
}
}
]
messages = [{"role": "user", "content": "What's the weather like in Chicago today?"}]
response = client.chat.completions.create(
model="gemini-1.5-flash",
messages=messages,
tools=tools,
tool_choice="auto"
)
print(response)

 

画像理解

ジェミニ・モデルは、このモデルにおけるネイティブのマルチモーダル・モデルである。多くの一般的なビジュアル・タスクいずれも優れたパフォーマンスを発揮する。

import base64
from openai import OpenAI
client = OpenAI(
api_key="GEMINI_API_KEY",
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
# Function to encode the image
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
# Getting the base64 string
base64_image = encode_image("Path/to/agi/image.jpeg")
response = client.chat.completions.create(
model="gemini-1.5-flash",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is in this image?",
},
{
"type": "image_url",
"image_url": {
"url":  f"data:image/jpeg;base64,{base64_image}"
},
},
],
}
],
)
print(response.choices[0])

 

構造化出力

ジェミニのモデルは次のようにモデル化できる。あなたが定義した構造体JSONオブジェクトを出力する。

from pydantic import BaseModel
from openai import OpenAI
client = OpenAI(
api_key="GEMINI_API_KEY",
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
class CalendarEvent(BaseModel):
name: str
date: str
participants: list[str]
completion = client.beta.chat.completions.parse(
model="gemini-1.5-flash",
messages=[
{"role": "system", "content": "Extract the event information."},
{"role": "user", "content": "John and Susan are going to an AI conference on Friday."},
],
response_format=CalendarEvent,
)
print(completion.choices[0].message.parsed)

 

埋め込み

テキスト埋め込みは、テキスト文字列の関連性を測定する。 ジェミニAPI 生成する。

from openai import OpenAI
client = OpenAI(
api_key="GEMINI_API_KEY",
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
response = client.embeddings.create(
input="Your text string goes here",
model="text-embedding-004"
)
print(response.data[0].embedding)
無断転載を禁じます:チーフAIシェアリングサークル " GeminiモデルAPIはOpenAIフォーマットと互換性がありますか?
ja日本語