Vision input
Kimi K2.6 and Gemma 4 31B support image input alongside text. The example below sends a local image as part of a chat completion request.
from openai import OpenAI
import base64
import os
api_base = "http://localhost:8080/v1"
image_path = "image.jpg" # insert path to image
model = "kimi-latest" # select model
client = OpenAI(
api_key=os.environ.get("PRIVATE_MODE_API_KEY"),
base_url=api_base,
)
def encode_image_to_base64(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
if not os.path.exists(image_path):
print(f"Error: Image file not found at {image_path}")
exit(1)
base64_image = encode_image_to_base64(image_path)
chat_response = client.chat.completions.create(
model=model,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{
"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{base64_image}"},
},
],
}
],
)
print("Chat completion output:", chat_response.choices[0].message.content)