Skip to main content
# Install dependency: pip install openai
from openai import OpenAI

# Initialize client
client = OpenAI(
    api_key="your-api-key",
    base_url="https://gateway.iotex.ai/v1"
)

# Simple conversation
def simple_chat(prompt):
    response = client.chat.completions.create(
        model="gemini-2.5-flash",
        messages=[{"role": "user", "content": prompt}],
        max_tokens=1000
    )
    return response.choices[0].message.content

# Multi-turn conversation
def multi_turn_chat():
    messages = [
        {"role": "system", "content": "You are a Python programming assistant"},
        {"role": "user", "content": "How to read CSV files?"}
    ]

    response = client.chat.completions.create(
        model="gemini-2.5-flash",
        messages=messages,
        temperature=0.7
    )

    # Add AI response to conversation history
    messages.append({
        "role": "assistant",
        "content": response.choices[0].message.content
    })

    return messages

# Streaming output
def stream_chat(prompt):
    stream = client.chat.completions.create(
        model="gemini-2.5-flash",
        messages=[{"role": "user", "content": prompt}],
        stream=True
    )

    for chunk in stream:
        if chunk.choices[0].delta.content is not None:
            print(chunk.choices[0].delta.content, end="")

# Usage examples
if __name__ == "__main__":
    # Simple call
    result = simple_chat("Write a Python bubble sort function")
    print(result)

    # Streaming output
    stream_chat("Explain basic concepts of machine learning")

Method 2: Using requests Library

import requests

class AIClient:
    def __init__(self, api_key, base_url="https://gateway.iotex.ai"):
        self.api_key = api_key
        self.base_url = base_url
        self.headers = {
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        }

    def chat(self, messages, model="gemini-2.5-flash", **kwargs):
        data = {
            "model": model,
            "messages": messages,
            **kwargs
        }

        response = requests.post(
            f"{self.base_url}/v1/chat/completions",
            headers=self.headers,
            json=data
        )

        if response.status_code == 200:
            return response.json()
        else:
            raise Exception(f"API call failed: {response.status_code} - {response.text}")

    def get_models(self):
        response = requests.get(
            f"{self.base_url}/v1/models",
            headers=self.headers
        )
        return response.json()

# Usage example
client = AIClient("your-api-key")

# Get available models
models = client.get_models()
print("Available models:", [model['id'] for model in models['data']])

# Start conversation
response = client.chat([
    {"role": "user", "content": "Hello, introduce yourself"}
])
print(response['choices'][0]['message']['content'])

LangChain Integration

# Install dependency: pip install langchain-openai
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage

# Initialize LangChain with IoTeX AI Gateway
llm = ChatOpenAI(
    model="gemini-2.5-flash",
    openai_api_key="your-api-key",
    openai_api_base="https://gateway.iotex.ai/v1",
    temperature=0.7
)

# Simple call
response = llm.invoke([HumanMessage(content="Explain what large language models are")])
print(response.content)

# System prompt + user message
messages = [
    SystemMessage(content="You are a professional technical documentation writer"),
    HumanMessage(content="Write an API documentation template")
]
response = llm.invoke(messages)
print(response.content)