Portkey's AI gateway supports vision models like GPT-4V by OpenAI, Gemini by Google and more.
What are vision models?
Vision models are artificial intelligence systems that combine both vision and language modalities to process images and natural language text. These models are typically trained on large image and text datasets with different structures based on the pre-training objective.
Vision Chat Completion Usage
Portkey supports the OpenAI signature to define messages with images as part of the API request. Images are made available to the model in two main ways: by passing a link to the image or by passing the base64 encoded image directly in the request.
Here's an example using OpenAI's gpt-4-vision-preview model
import Portkey from'portkey-ai';// Initialize the Portkey clientconstportkey=newPortkey({ apiKey:"PORTKEY_API_KEY",// Replace with your Portkey API key virtualKey:"VIRTUAL_KEY"// Add your provider's virtual key});// Generate a chat completion with streamingasyncfunctiongetChatCompletionFunctions(){constresponse=awaitportkey.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: "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
}, ], }, ], });console.log(response)}awaitgetChatCompletionFunctions();
from portkey_ai import Portkey# Initialize the Portkey clientportkey =Portkey( api_key="PORTKEY_API_KEY", # Replace with your Portkey API key virtual_key="VIRTUAL_KEY"# Add your provider's virtual key)response = portkey.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": "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(completion)
import OpenAI from'openai'; // We're using the v4 SDKimport { PORTKEY_GATEWAY_URL, createHeaders } from'portkey-ai'constopenai=newOpenAI({ apiKey:'OPENAI_API_KEY',// defaults to process.env["OPENAI_API_KEY"], baseURL:PORTKEY_GATEWAY_URL, defaultHeaders:createHeaders({ provider:"openai", apiKey:"PORTKEY_API_KEY"// defaults to process.env["PORTKEY_API_KEY"] })});// Generate a chat completion with streamingasyncfunctiongetChatCompletionFunctions(){constresponse=awaitopenai.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: "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
}, ], }, ], });console.log(response)}awaitgetChatCompletionFunctions();
On completion, the request will get logged in the logs UI where any image inputs or outputs can be viewed. Portkey will automatically load the image URLs or the base64 images making for a great debugging experience with vision models.
Creating prompt templates for vision models
Portkey's prompt library supports creating templates with image inputs. If the same image will be used in all prompt calls, you can save it as part of the template's image URL itself. Or, if the image will be sent via the API as a variable, add a variable to the image link.
Supported Providers and Models
The following providers are supported for image generation with more providers getting added soon. Please raise a request or a PR to add model or provider to the AI gateway.