The page has been translated by Gen AI.

Request Examples

SDKs Supported by API

AIOS models are compatible with OpenAI and Cohere APIs, so they are also compatible with OpenAI and Cohere SDKs. The following is the list of OpenAI and Cohere compatible APIs supported by Samsung Cloud Platform AIOS service.

API NameAPIDescriptionSupported SDK
Text Completion APIGenerates natural sentences that follow the given string as input.
  • openai
Chat Completion APIGenerates a response that follows the conversation history.
  • openai
Embeddings APIConverts text to high-dimensional vectors (embeddings), which can be used for various natural language processing (NLP) tasks such as text similarity calculation, clustering, and search.
  • openai
Rerank APIPredicts the relevance between a single query and each item in a list of documents by applying embedding models or cross-encoder models.
  • cohere
Table. List of SDK-compatible APIs
Caution
  • Request Examples guide is explained based on a Virtual Server environment with Python/NodeJS/Go runtime environments configured.
  • Actual execution may result in different token counts and message content compared to the examples.

Package Installation

You can install SDK packages that support AIOS model API requests according to your execution environment.

Color mode
pip install requests openai cohere \
  langchain langchain-openai langchain-cohere langchain-together
pip install requests openai cohere \
  langchain langchain-openai langchain-cohere langchain-together
npm install openai cohere-ai langchain \
  @langchain/core @langchain/openai @langchain/cohere
npm install openai cohere-ai langchain \
  @langchain/core @langchain/openai @langchain/cohere
go get github.com/openai/openai-go \
  github.com/cohere-ai/cohere-go/v2
go get github.com/openai/openai-go \
  github.com/cohere-ai/cohere-go/v2
Code Block. SDK package installation

Text Completion API

The Text Completion API generates natural sentences that immediately follow the given string as input.

non-stream request

Request

Caution
Text Completion API input can only use strings.
Color mode
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# This includes the model ID to use and the prompt.
data = {
  "model": model,
  "prompt": "Hi"
}

# Send a POST request to the AIOS API's v1/completions endpoint.
# Use urljoin function to combine the base URL and endpoint path.
response = requests.post(urljoin(aios_base_url, "v1/completions"), json=data)

# Parse the response body in JSON format.
body = json.loads(response.text)

# response.choices[0].text is the response text generated by the AI model.
print(body["choices"][0]["text"])
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# This includes the model ID to use and the prompt.
data = {
  "model": model,
  "prompt": "Hi"
}

# Send a POST request to the AIOS API's v1/completions endpoint.
# Use urljoin function to combine the base URL and endpoint path.
response = requests.post(urljoin(aios_base_url, "v1/completions"), json=data)

# Parse the response body in JSON format.
body = json.loads(response.text)

# response.choices[0].text is the response text generated by the AI model.
print(body["choices"][0]["text"])
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Generate a completion using the AIOS model.
# model parameter specifies the model ID to use,
# prompt parameter is the input text to provide to the AI.
response = client.completions.create(
  model=model,
  prompt="Hi"
)

# response.choices[0].text is the response text generated by the AI model.
print(response.choices[0].text)
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Generate a completion using the AIOS model.
# model parameter specifies the model ID to use,
# prompt parameter is the input text to provide to the AI.
response = client.completions.create(
  model=model,
  prompt="Hi"
)

# response.choices[0].text is the response text generated by the AI model.
print(response.choices[0].text)
from langchain_openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an LLM (Large Language Model) instance using LangChain's OpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# model parameter specifies the model ID to use.
llm = OpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Pass the prompt "Hi" to the LLM and receive a response.
# The invoke method returns the model's output.
print(llm.invoke("Hi"))
from langchain_openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an LLM (Large Language Model) instance using LangChain's OpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# model parameter specifies the model ID to use.
llm = OpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Pass the prompt "Hi" to the LLM and receive a response.
# The invoke method returns the model's output.
print(llm.invoke("Hi"))
const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// This includes the model ID to use and the prompt.
const data = {
  model: model,
  prompt: "Hi",
};

// Create the AIOS API's v1/completions endpoint URL.
let url = new URL("/v1/completions", aios_base_url);

// Send a POST request to the AIOS API.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});

// Parse the response body in JSON format.
const body = await response.json();

// response.choices[0].text is the response text generated by the AI model.
console.log(body.choices[0].text);
const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// This includes the model ID to use and the prompt.
const data = {
  model: model,
  prompt: "Hi",
};

// Create the AIOS API's v1/completions endpoint URL.
let url = new URL("/v1/completions", aios_base_url);

// Send a POST request to the AIOS API.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});

// Parse the response body in JSON format.
const body = await response.json();

// response.choices[0].text is the response text generated by the AI model.
console.log(body.choices[0].text);
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a completion using the AIOS model.
// model parameter specifies the model ID to use,
// prompt parameter is the input text to provide to the AI.
const completions = await client.completions.create({
  model: model,
  prompt: "Hi",
});

// response.choices[0].text is the response text generated by the AI model.
console.log(completions.choices[0].text);
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a completion using the AIOS model.
// model parameter specifies the model ID to use,
// prompt parameter is the input text to provide to the AI.
const completions = await client.completions.create({
  model: model,
  prompt: "Hi",
});

// response.choices[0].text is the response text generated by the AI model.
console.log(completions.choices[0].text);
import { OpenAI } from "@langchain/openai";

const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Create an LLM (Large Language Model) instance using LangChain's OpenAI class.
// model parameter specifies the model ID to use.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// configuration.baseURL points to the v1 endpoint of the AIOS API.
const llm = new OpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Pass the prompt "Hi" to the LLM and receive a streaming response.
// The stream method returns a stream that generates tokens in real-time.
const completion = await llm.invoke("Hi");

// Output the generated response.
// This text is the response generated by the AI model.
console.log(completion);
import { OpenAI } from "@langchain/openai";

const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Create an LLM (Large Language Model) instance using LangChain's OpenAI class.
// model parameter specifies the model ID to use.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// configuration.baseURL points to the v1 endpoint of the AIOS API.
const llm = new OpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Pass the prompt "Hi" to the LLM and receive a streaming response.
// The stream method returns a stream that generates tokens in real-time.
const completion = await llm.invoke("Hi");

// Output the generated response.
// This text is the response generated by the AI model.
console.log(completion);
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)
const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the data structure to be used for POST requests.
// Model: Model ID to use
// Prompt: Input text to provide to the AI
// Stream: Whether to stream response (optional)
type PostData struct {
	Model string `json:"model"`
	Prompt string `json:"prompt"`
	Stream bool `json:"stream,omitempty"`
}

func main() {
	// Create request data.
	data := PostData{
		Model: model,
		Prompt: "Hi",
	}

	// Marshal data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/completions endpoint.
	response, err := http.Post(aiosBaseUrl + "/v1/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()
	
	// Read the entire response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	var v map[string]interface{}
	json.Unmarshal(body, &v)
	// Extract the choices array from the response.
	choices := v["choices"].([]interface{})
	// Extract the first data's text.
	choice := choices[0].(map[string]interface{})
	text := choice["text"]
	// Output the response text generated by the AI model.
	fmt.Println(text)
}
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)
const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the data structure to be used for POST requests.
// Model: Model ID to use
// Prompt: Input text to provide to the AI
// Stream: Whether to stream response (optional)
type PostData struct {
	Model string `json:"model"`
	Prompt string `json:"prompt"`
	Stream bool `json:"stream,omitempty"`
}

func main() {
	// Create request data.
	data := PostData{
		Model: model,
		Prompt: "Hi",
	}

	// Marshal data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/completions endpoint.
	response, err := http.Post(aiosBaseUrl + "/v1/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()
	
	// Read the entire response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	var v map[string]interface{}
	json.Unmarshal(body, &v)
	// Extract the choices array from the response.
	choices := v["choices"].([]interface{})
	// Extract the first data's text.
	choice := choices[0].(map[string]interface{})
	text := choice["text"]
	// Output the response text generated by the AI model.
	fmt.Println(text)
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
	"github.com/openai/openai-go/packages/param"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// Use option.WithBaseURL to set the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl+"/v1"),
	)

	// Generate a completion using the AIOS model.
	// Use openai.CompletionNewParams to set the model and prompt.
	completion, err := client.Completions.New(context.TODO(), openai.CompletionNewParams{
		Model:  openai.CompletionNewParamsModel(model),
		Prompt: openai.CompletionNewParamsPromptUnion{OfString: param.Opt[string]{Value: "Hi"}},
	})

	if err != nil {
		panic(err)
	}

	// response.choices[0].text is the response text generated by the AI model.
	fmt.Println(completion.Choices[0].Text)
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
	"github.com/openai/openai-go/packages/param"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// Use option.WithBaseURL to set the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl+"/v1"),
	)

	// Generate a completion using the AIOS model.
	// Use openai.CompletionNewParams to set the model and prompt.
	completion, err := client.Completions.New(context.TODO(), openai.CompletionNewParams{
		Model:  openai.CompletionNewParamsModel(model),
		Prompt: openai.CompletionNewParamsPromptUnion{OfString: param.Opt[string]{Value: "Hi"}},
	})

	if err != nil {
		panic(err)
	}

	// response.choices[0].text is the response text generated by the AI model.
	fmt.Println(completion.Choices[0].Text)
}
Code Block. /v1/completions request
Note
For information on the aios endpoint-url and model ID for calling the model, see the LLM Endpoint Usage Guide on the resource details page. Please refer to Using LLM.

Response

You can see that the model’s answer is included in the text field of choices.

 future president of the United States, I hope you're doing well. As a

stream request

Using the stream feature, you can receive responses token by token as the model generates tokens, without waiting for the model to complete the entire response.

Request

Enter True for the stream parameter value.

Color mode
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# This includes the model ID to use, the prompt, and whether to stream.
data = {
  "model": model,
  "prompt": "Hi",
  "stream": True
}

# Send a POST request to the AIOS API's v1/completions endpoint.
# Set stream=True to receive real-time streaming responses.
response = requests.post(urljoin(aios_base_url, "v1/completions"), json=data, stream=True)

# You can receive responses as the model generates tokens.
# Responses are sent separated by each line, so process with iter_lines().
for line in response.iter_lines():
  if line:
    try:
	  # Remove the 'data: ' prefix and parse the JSON data.
      body = json.loads(line[len("data: "):])
	  # response.choices[0].text is the response text generated by the AI model.
      print(body["choices"][0]["text"])
    except:
      pass
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# This includes the model ID to use, the prompt, and whether to stream.
data = {
  "model": model,
  "prompt": "Hi",
  "stream": True
}

# Send a POST request to the AIOS API's v1/completions endpoint.
# Set stream=True to receive real-time streaming responses.
response = requests.post(urljoin(aios_base_url, "v1/completions"), json=data, stream=True)

# You can receive responses as the model generates tokens.
# Responses are sent separated by each line, so process with iter_lines().
for line in response.iter_lines():
  if line:
    try:
	  # Remove the 'data: ' prefix and parse the JSON data.
      body = json.loads(line[len("data: "):])
	  # response.choices[0].text is the response text generated by the AI model.
      print(body["choices"][0]["text"])
    except:
      pass
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Generate a completion using the AIOS model.
# model parameter specifies the model ID to use,
# prompt parameter is the input text to provide to the AI.
# Set stream=True to receive real-time streaming responses.
response = client.completions.create(
  model=model,
  prompt="Hi",
  stream=True
)

# You can receive responses as the model generates tokens.
# response is sent in stream format, so you can process it iteratively.
for chunk in response:
  # Each chunk's choices[0].text is the response text generated by the AI model.
  print(chunk.choices[0].text)
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Generate a completion using the AIOS model.
# model parameter specifies the model ID to use,
# prompt parameter is the input text to provide to the AI.
# Set stream=True to receive real-time streaming responses.
response = client.completions.create(
  model=model,
  prompt="Hi",
  stream=True
)

# You can receive responses as the model generates tokens.
# response is sent in stream format, so you can process it iteratively.
for chunk in response:
  # Each chunk's choices[0].text is the response text generated by the AI model.
  print(chunk.choices[0].text)
from langchain_openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an LLM (Large Language Model) instance using LangChain's OpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# model parameter specifies the model ID to use.
llm = OpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Pass the prompt "Hi" to the LLM and receive a streaming response.
# The stream method returns a stream that generates tokens in real-time.
response = llm.stream("Hi")

# You can receive responses as the model generates tokens.
# response is sent in stream format, so you can process it iteratively.
for chunk in response:
  # Output each chunk.
  # This chunk is the response token generated by the AI model.
  print(chunk)
from langchain_openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an LLM (Large Language Model) instance using LangChain's OpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# model parameter specifies the model ID to use.
llm = OpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Pass the prompt "Hi" to the LLM and receive a streaming response.
# The stream method returns a stream that generates tokens in real-time.
response = llm.stream("Hi")

# You can receive responses as the model generates tokens.
# response is sent in stream format, so you can process it iteratively.
for chunk in response:
  # Output each chunk.
  # This chunk is the response token generated by the AI model.
  print(chunk)
const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// This includes the model ID to use, the prompt, and whether to stream.
const data = {
  model: model,
  prompt: "Hi",
  stream: true,
};

// Create the AIOS API's v1/completions endpoint URL.
let url = new URL("/v1/completions", aios_base_url);

// Send a POST request to the AIOS API.
// Set stream: true to receive real-time streaming responses.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});

// You can receive responses as the model generates tokens.
// Convert the response body to a text decoder stream and read it.
const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
let buf = "";
while (true) {
  const { value, done } = await reader.read();
  if (done) break;

  // Add received data to buffer.
  buf += value;
  let sep;
  // Find newline characters (\n\n) in the buffer and separate data.
  while ((sep = buf.indexOf("\n\n")) >= 0) {
    const data = buf.slice(0, sep);
    buf = buf.slice(sep + 2);
    
	// Process each line.
    for (const rawLine of data.split("\n")) {
      const line = rawLine.trim();
      if (!line.startsWith("data: ")) continue;

      // Remove the "data: " prefix and extract JSON data.
      const payload = line.slice("data: ".length).trim();
      if (payload === "[DONE]") break;

	  // Parse the JSON data.
      const json = JSON.parse(payload);
	  // choices[0].text is the response text generated by the AI model.
      console.log(json.choices[0].text);
    }
  }
}
const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// This includes the model ID to use, the prompt, and whether to stream.
const data = {
  model: model,
  prompt: "Hi",
  stream: true,
};

// Create the AIOS API's v1/completions endpoint URL.
let url = new URL("/v1/completions", aios_base_url);

// Send a POST request to the AIOS API.
// Set stream: true to receive real-time streaming responses.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});

// You can receive responses as the model generates tokens.
// Convert the response body to a text decoder stream and read it.
const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
let buf = "";
while (true) {
  const { value, done } = await reader.read();
  if (done) break;

  // Add received data to buffer.
  buf += value;
  let sep;
  // Find newline characters (\n\n) in the buffer and separate data.
  while ((sep = buf.indexOf("\n\n")) >= 0) {
    const data = buf.slice(0, sep);
    buf = buf.slice(sep + 2);
    
	// Process each line.
    for (const rawLine of data.split("\n")) {
      const line = rawLine.trim();
      if (!line.startsWith("data: ")) continue;

      // Remove the "data: " prefix and extract JSON data.
      const payload = line.slice("data: ".length).trim();
      if (payload === "[DONE]") break;

	  // Parse the JSON data.
      const json = JSON.parse(payload);
	  // choices[0].text is the response text generated by the AI model.
      console.log(json.choices[0].text);
    }
  }
}
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a completion using the AIOS model.
// model parameter specifies the model ID to use,
// prompt parameter is the input text to provide to the AI.
// Set stream: true to receive real-time streaming responses.
const completions = await client.completions.create({
  model: model,
  prompt: "Hi",
  stream: true,
});

// You can receive responses as the model generates tokens.
// Use for await...of loop to sequentially process stream events.
for await (const event of completions) {
  // Each event's choices[0].text is the response text generated by the AI model.
  console.log(event.choices[0].text);
}
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a completion using the AIOS model.
// model parameter specifies the model ID to use,
// prompt parameter is the input text to provide to the AI.
// Set stream: true to receive real-time streaming responses.
const completions = await client.completions.create({
  model: model,
  prompt: "Hi",
  stream: true,
});

// You can receive responses as the model generates tokens.
// Use for await...of loop to sequentially process stream events.
for await (const event of completions) {
  // Each event's choices[0].text is the response text generated by the AI model.
  console.log(event.choices[0].text);
}
import { OpenAI } from "@langchain/openai";

const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Create an LLM (Large Language Model) instance using LangChain's OpenAI class.
// model parameter specifies the model ID to use.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// configuration.baseURL points to the v1 endpoint of the AIOS API.
const llm = new OpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Pass the prompt "Hi" to the LLM and receive a streaming response.
// The stream method returns a stream that generates tokens in real-time.
const completion = await llm.stream("Hi");

// You can receive responses as the model generates tokens.
// Use for await...of loop to sequentially process stream chunks.
for await (const chunk of completion) {
  // Output each chunk.
  // This chunk is the response token generated by the AI model.
  console.log(chunk);
}
import { OpenAI } from "@langchain/openai";

const aios_base_url = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>"                     // Enter the model ID for calling the AIOS model.

// Create an LLM (Large Language Model) instance using LangChain's OpenAI class.
// model parameter specifies the model ID to use.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// configuration.baseURL points to the v1 endpoint of the AIOS API.
const llm = new OpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Pass the prompt "Hi" to the LLM and receive a streaming response.
// The stream method returns a stream that generates tokens in real-time.
const completion = await llm.stream("Hi");

// You can receive responses as the model generates tokens.
// Use for await...of loop to sequentially process stream chunks.
for await (const chunk of completion) {
  // Output each chunk.
  // This chunk is the response token generated by the AI model.
  console.log(chunk);
}
package main

import (
	"bufio"
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the data structure to be used for POST requests.
// Model: Model ID to use
// Prompt: Input text to provide to the AI
// Stream: Whether to stream response (optional)
type PostData struct {
	Model  string `json:"model"`
	Prompt string `json:"prompt"`
	Stream bool   `json:"stream,omitempty"`
}

func main() {
	// Create request data.
	// Set Stream: true to receive real-time streaming responses.
	data := PostData{
		Model:  model,
		Prompt: "Hi",
		Stream: true,
	}

	// Marshal data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/completions endpoint.
	response, err := http.Post(aiosBaseUrl+"/v1/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// You can receive responses as the model generates tokens.
	// Scan the HTTP response body and process line by line.
	var v map[string]interface{}
	scanner := bufio.NewScanner(response.Body)
	for scanner.Scan() {
		line := bytes.TrimSpace(scanner.Bytes())

		// Skip lines that don't start with "data: ".
		if !bytes.HasPrefix(line, []byte("data: ")) {
			continue
		}

		// Remove the "data: " prefix.
		payload := bytes.TrimPrefix(line, []byte("data: "))

		// If payload is "[DONE]", end streaming.
		if bytes.Equal(payload, []byte("[DONE]")) {
			break
		}

		// Parse the JSON data.
		json.Unmarshal(payload, &v)
		// Extract the choices array from the response.
		choices := v["choices"].([]interface{})
		// Extract the first data.
		choice := choices[0].(map[string]interface{})
		// Extract the response token generated by the AI model.
		text := choice["text"]
		fmt.Println(text)
	}
}
package main

import (
	"bufio"
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the data structure to be used for POST requests.
// Model: Model ID to use
// Prompt: Input text to provide to the AI
// Stream: Whether to stream response (optional)
type PostData struct {
	Model  string `json:"model"`
	Prompt string `json:"prompt"`
	Stream bool   `json:"stream,omitempty"`
}

func main() {
	// Create request data.
	// Set Stream: true to receive real-time streaming responses.
	data := PostData{
		Model:  model,
		Prompt: "Hi",
		Stream: true,
	}

	// Marshal data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/completions endpoint.
	response, err := http.Post(aiosBaseUrl+"/v1/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// You can receive responses as the model generates tokens.
	// Scan the HTTP response body and process line by line.
	var v map[string]interface{}
	scanner := bufio.NewScanner(response.Body)
	for scanner.Scan() {
		line := bytes.TrimSpace(scanner.Bytes())

		// Skip lines that don't start with "data: ".
		if !bytes.HasPrefix(line, []byte("data: ")) {
			continue
		}

		// Remove the "data: " prefix.
		payload := bytes.TrimPrefix(line, []byte("data: "))

		// If payload is "[DONE]", end streaming.
		if bytes.Equal(payload, []byte("[DONE]")) {
			break
		}

		// Parse the JSON data.
		json.Unmarshal(payload, &v)
		// Extract the choices array from the response.
		choices := v["choices"].([]interface{})
		// Extract the first data.
		choice := choices[0].(map[string]interface{})
		// Extract the response token generated by the AI model.
		text := choice["text"]
		fmt.Println(text)
	}
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
	"github.com/openai/openai-go/packages/param"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// Use option.WithBaseURL to set the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate a streaming completion using the AIOS model.
	// Use openai.CompletionNewParams to set the model and prompt.
	completion := client.Completions.NewStreaming(context.TODO(), openai.CompletionNewParams{
		Model:  openai.CompletionNewParamsModel(model),
		Prompt: openai.CompletionNewParamsPromptUnion{OfString: param.Opt[string]{Value: "Hi"}},
	})

	// You can receive responses as the model generates tokens.
	// The Next() method returns true when there is a next chunk.
	for completion.Next() {
		// Get the choices slice of the current chunk.
		chunk := completion.Current().Choices
		// choices[0].text is the response text generated by the AI model.
		fmt.Println(chunk[0].Text)
	}
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
	"github.com/openai/openai-go/packages/param"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// Use option.WithBaseURL to set the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate a streaming completion using the AIOS model.
	// Use openai.CompletionNewParams to set the model and prompt.
	completion := client.Completions.NewStreaming(context.TODO(), openai.CompletionNewParams{
		Model:  openai.CompletionNewParamsModel(model),
		Prompt: openai.CompletionNewParamsPromptUnion{OfString: param.Opt[string]{Value: "Hi"}},
	})

	// You can receive responses as the model generates tokens.
	// The Next() method returns true when there is a next chunk.
	for completion.Next() {
		// Get the choices slice of the current chunk.
		chunk := completion.Current().Choices
		// choices[0].text is the response text generated by the AI model.
		fmt.Println(chunk[0].Text)
	}
}
Code Block. /v1/completions stream request request

Response

Answers are generated for each token, and each token can be checked in the text field of choices.

 I
'm
 looking
 for
 a
 way
 to
 check
 if
 a
 specific
 process
 is
 running
 on

Chat Completion API

The Chat Completion API receives a list of messages (context) listed in order and generates an appropriate message as the next response.

non-stream request

Request

If the messages consist only of text messages, you can call them as follows.

Color mode
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# This includes the model ID to use and the messages list.
# The messages list includes system messages and user messages.
data = {
  "model": model,
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hi"}
  ]
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
response = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data)

# Parse the response body in JSON format.
body = json.loads(response.text)
# choices[0].message is the response generated by the AI model.
print(body["choices"][0]["message"])
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# This includes the model ID to use and the messages list.
# The messages list includes system messages and user messages.
data = {
  "model": model,
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hi"}
  ]
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
response = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data)

# Parse the response body in JSON format.
body = json.loads(response.text)
# choices[0].message is the response generated by the AI model.
print(body["choices"][0]["message"])
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Generate a chat completion using the AIOS model.
# model parameter specifies the model ID to use.
# messages parameter is a list of messages including system and user messages.
response = client.chat.completions.create(
  model=model,
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hi"}
  ]
)

# Output choices[0].message from the generated response.
print(response.choices[0].message.model_dump())
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Generate a chat completion using the AIOS model.
# model parameter specifies the model ID to use.
# messages parameter is a list of messages including system and user messages.
response = client.chat.completions.create(
  model=model,
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hi"}
  ]
)

# Output choices[0].message from the generated response.
print(response.choices[0].message.model_dump())
from langchain_openai import ChatOpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# model parameter specifies the model ID to use.
chat_llm = ChatOpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Configure the chat messages list.
# Include system messages and user messages.
messages = [
    ("system", "You are a helpful assistant."),
    ("human", "Hi"),
]

# Pass the messages list to the chat LLM and receive a response.
# The invoke method returns the model's output.
chat_completion = chat_llm.invoke(messages)

# Output the generated response.
print(chat_completion.model_dump())
from langchain_openai import ChatOpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# model parameter specifies the model ID to use.
chat_llm = ChatOpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Configure the chat messages list.
# Include system messages and user messages.
messages = [
    ("system", "You are a helpful assistant."),
    ("human", "Hi"),
]

# Pass the messages list to the chat LLM and receive a response.
# The invoke method returns the model's output.
chat_completion = chat_llm.invoke(messages)

# Output the generated response.
print(chat_completion.model_dump())
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// This includes the model ID to use and the messages list.
// The messages list includes system messages and user messages.
const data = {
  model: model,
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hi" },
  ],
};

// Create the AIOS API's v1/chat/completions endpoint URL.
let url = new URL("/v1/chat/completions", aios_base_url);

// Send a POST request to the AIOS API.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});

// Parse the response body in JSON format.
const body = await response.json();
// Output choices[0].message from the generated response.
console.log(body.choices[0].message);
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// This includes the model ID to use and the messages list.
// The messages list includes system messages and user messages.
const data = {
  model: model,
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hi" },
  ],
};

// Create the AIOS API's v1/chat/completions endpoint URL.
let url = new URL("/v1/chat/completions", aios_base_url);

// Send a POST request to the AIOS API.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});

// Parse the response body in JSON format.
const body = await response.json();
// Output choices[0].message from the generated response.
console.log(body.choices[0].message);
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a chat completion using the AIOS model.
// model parameter specifies the model ID to use.
// messages parameter is a list of messages including system and user messages.
const response = await client.chat.completions.create({
  model: model,
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hi" },
  ],
});

// Output choices[0].message from the generated response.
console.log(response.choices[0].message);
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a chat completion using the AIOS model.
// model parameter specifies the model ID to use.
// messages parameter is a list of messages including system and user messages.
const response = await client.chat.completions.create({
  model: model,
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hi" },
  ],
});

// Output choices[0].message from the generated response.
console.log(response.choices[0].message);
import { HumanMessage, SystemMessage } from "@langchain/core/messages";
import { ChatOpenAI } from "@langchain/openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
// model parameter specifies the model ID to use.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// configuration.baseURL points to the v1 endpoint of the AIOS API.
const llm = new ChatOpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Configure the chat messages list.
// Include system messages and user messages using SystemMessage and HumanMessage objects.
const messages = [
  new SystemMessage("You are a helpful assistant."),
  new HumanMessage("Hi"),
];

// Pass the messages list to the chat LLM and receive a response.
// The invoke method returns the model's output.
const response = await llm.invoke(messages);

// Output the content of the generated response.
// This content is the response text generated by the AI model.
console.log(response.content);
import { HumanMessage, SystemMessage } from "@langchain/core/messages";
import { ChatOpenAI } from "@langchain/openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
// model parameter specifies the model ID to use.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// configuration.baseURL points to the v1 endpoint of the AIOS API.
const llm = new ChatOpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Configure the chat messages list.
// Include system messages and user messages using SystemMessage and HumanMessage objects.
const messages = [
  new SystemMessage("You are a helpful assistant."),
  new HumanMessage("Hi"),
];

// Pass the messages list to the chat LLM and receive a response.
// The invoke method returns the model's output.
const response = await llm.invoke(messages);

// Output the content of the generated response.
// This content is the response text generated by the AI model.
console.log(response.content);
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the message structure.
// Role: Message role (e.g., system, user)
// Content: Message content
type Message struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

// Define the data structure to be used for POST requests.
// Model: Model ID to use
// Messages: List of messages
// Stream: Whether to stream response (optional)
type PostData struct {
	Model    string    `json:"model"`
	Messages []Message `json:"messages"`
	Stream   bool      `json:"stream,omitempty"`
}

func main() {
	// Create request data.
	// The messages list includes system messages and user messages.
	data := PostData{
		Model: model,
		Messages: []Message{
			{
				Role:    "system",
				Content: "You are a helpful assistant.",
			},
			{
				Role:    "user",
				Content: "Hi",
			},
		},
	}

	// Marshal data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/chat/completions endpoint.
	response, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the entire response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Unmarshal the response body into map format.
	var v map[string]interface{}
	json.Unmarshal(body, &v)
	// Extract the choices array from the response.
	choices := v["choices"].([]interface{})
	// Extract the first data.
	choice := choices[0].(map[string]interface{})
	// Format and output the response message generated by the AI model in JSON format.
	message, err := json.MarshalIndent(choice["message"], "", "  ")
	if err != nil {
		panic(err)
	}	
	fmt.Println(string(message))
}
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the message structure.
// Role: Message role (e.g., system, user)
// Content: Message content
type Message struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

// Define the data structure to be used for POST requests.
// Model: Model ID to use
// Messages: List of messages
// Stream: Whether to stream response (optional)
type PostData struct {
	Model    string    `json:"model"`
	Messages []Message `json:"messages"`
	Stream   bool      `json:"stream,omitempty"`
}

func main() {
	// Create request data.
	// The messages list includes system messages and user messages.
	data := PostData{
		Model: model,
		Messages: []Message{
			{
				Role:    "system",
				Content: "You are a helpful assistant.",
			},
			{
				Role:    "user",
				Content: "Hi",
			},
		},
	}

	// Marshal data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/chat/completions endpoint.
	response, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the entire response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Unmarshal the response body into map format.
	var v map[string]interface{}
	json.Unmarshal(body, &v)
	// Extract the choices array from the response.
	choices := v["choices"].([]interface{})
	// Extract the first data.
	choice := choices[0].(map[string]interface{})
	// Format and output the response message generated by the AI model in JSON format.
	message, err := json.MarshalIndent(choice["message"], "", "  ")
	if err != nil {
		panic(err)
	}	
	fmt.Println(string(message))
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// Use option.WithBaseURL to set the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate a chat completion using the AIOS model.
	// Use openai.ChatCompletionNewParams to set the model and messages list.
	// The messages list includes system messages and user messages.
	response, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
		Model: model,
		Messages: []openai.ChatCompletionMessageParamUnion{
			openai.SystemMessage("You are a helpful assistant."),
			openai.UserMessage("Hi"),
		},
	})

	if err != nil {
		panic(err)
	}

	// Format and output the response message generated by the AI model in JSON format.
	fmt.Println(response.Choices[0].Message.RawJSON())
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// Use option.WithBaseURL to set the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate a chat completion using the AIOS model.
	// Use openai.ChatCompletionNewParams to set the model and messages list.
	// The messages list includes system messages and user messages.
	response, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
		Model: model,
		Messages: []openai.ChatCompletionMessageParamUnion{
			openai.SystemMessage("You are a helpful assistant."),
			openai.UserMessage("Hi"),
		},
	})

	if err != nil {
		panic(err)
	}

	// Format and output the response message generated by the AI model in JSON format.
	fmt.Println(response.Choices[0].Message.RawJSON())
}
Code Block. /v1/chat/completions request
Note
For information on the aios endpoint-url and model ID for calling the model, see the LLM Endpoint Usage Guide on the resource details page. Please refer to Using LLM.

Response

You can check the model’s answer content in message of choices.

{
  'annotations': None,
  'audio': None,
  'content': 'Hello! How can I help you today?',
  'function_call': None,
  'reasoning_content': 'The user says "Hi". We respond politely.',
  'refusal': None,
  'role': 'assistant',
  'tool_calls': []
}

stream request

Using stream, you can receive and process responses for each token the model generates, instead of waiting for the model to generate all answers and receiving them at once.

Request

Enter True for the stream parameter value.

Color mode
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# This includes the model ID to use, the messages list, and whether to stream.
# The messages list includes system messages and user messages.
data = {
  "model": model,
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hi"}
  ],
  "stream": True
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
# Set stream=True to receive real-time streaming responses.
response = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data, stream=True)

# You can receive responses as the model generates tokens.
# Responses are sent separated by each line, so process with iter_lines().
for line in response.iter_lines():
  if line:
    try:
	  # Remove the 'data: ' prefix and parse the JSON data.
      body = json.loads(line[len("data: "):])
	  # Output the delta (choices[0].delta).
	  # The delta is the response token generated by the AI model.
      print(body["choices"][0]["delta"])
    except:
      pass
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# This includes the model ID to use, the messages list, and whether to stream.
# The messages list includes system messages and user messages.
data = {
  "model": model,
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hi"}
  ],
  "stream": True
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
# Set stream=True to receive real-time streaming responses.
response = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data, stream=True)

# You can receive responses as the model generates tokens.
# Responses are sent separated by each line, so process with iter_lines().
for line in response.iter_lines():
  if line:
    try:
	  # Remove the 'data: ' prefix and parse the JSON data.
      body = json.loads(line[len("data: "):])
	  # Output the delta (choices[0].delta).
	  # The delta is the response token generated by the AI model.
      print(body["choices"][0]["delta"])
    except:
      pass
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Generate a chat completion using the AIOS model.
# model parameter specifies the model ID to use.
# messages parameter is a list of messages including system and user messages.
# Set stream=True to receive real-time streaming responses.
response = client.chat.completions.create(
  model=model,
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hi"}
  ],
  stream=True
)

# You can receive responses as the model generates tokens.
# response is sent in stream format, so you can process it iteratively.
for chunk in response:
  # Output the delta (choices[0].delta).
  # The delta is the response token generated by the AI model.
  print(chunk.choices[0].delta.model_dump())
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Generate a chat completion using the AIOS model.
# model parameter specifies the model ID to use.
# messages parameter is a list of messages including system and user messages.
# Set stream=True to receive real-time streaming responses.
response = client.chat.completions.create(
  model=model,
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hi"}
  ],
  stream=True
)

# You can receive responses as the model generates tokens.
# response is sent in stream format, so you can process it iteratively.
for chunk in response:
  # Output the delta (choices[0].delta).
  # The delta is the response token generated by the AI model.
  print(chunk.choices[0].delta.model_dump())
from langchain_openai import ChatOpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# model parameter specifies the model ID to use.
llm = ChatOpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Configure the chat messages list.
# Include system messages and user messages.
messages = [
  ("system", "You are a helpful assistant."),
  ("human", "Hi"),
]

# You can receive responses as the model generates tokens.
# The llm.stream method returns a stream that generates tokens in real-time.
for chunk in llm.stream(messages):
  # Output each chunk.
  # This chunk is the response token generated by the AI model.
  print(chunk)
from langchain_openai import ChatOpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# model parameter specifies the model ID to use.
llm = ChatOpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Configure the chat messages list.
# Include system messages and user messages.
messages = [
  ("system", "You are a helpful assistant."),
  ("human", "Hi"),
]

# You can receive responses as the model generates tokens.
# The llm.stream method returns a stream that generates tokens in real-time.
for chunk in llm.stream(messages):
  # Output each chunk.
  # This chunk is the response token generated by the AI model.
  print(chunk)
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// This includes the model ID to use, the messages list, and whether to stream.
// The messages list includes system messages and user messages.
const data = {
  model: model,
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hi" },
  ],
  stream: true,
};

// Create the AIOS API's v1/chat/completions endpoint URL.
let url = new URL("/v1/chat/completions", aios_base_url);

// Send a POST request to the AIOS API.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});

// You can receive responses as the model generates tokens.
// Convert the response body to a text decoder stream and read it.
const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
let buf = "";
while (true) {
  const { value, done } = await reader.read();
  if (done) break;

  // Add received data to buffer.
  buf += value;
  let sep;
  // Find newline characters (\n\n) in the buffer and separate data.
  while ((sep = buf.indexOf("\n\n")) >= 0) {
    const data = buf.slice(0, sep);
    buf = buf.slice(sep + 2);

    // Process each line.
    for (const rawLine of data.split("\n")) {
      const line = rawLine.trim();
      if (!line.startsWith("data: ")) continue;
      
	  // Remove the "data: " prefix and extract JSON data.
      const payload = line.slice("data: ".length).trim();
      if (payload === "[DONE]") break;

	  // Parse the JSON data.
      const json = JSON.parse(payload);

	  // Output the delta (choices[0].delta).
	  // The delta is the response token generated by the AI model.
      console.log(json.choices[0].delta);
    }
  }
}
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// This includes the model ID to use, the messages list, and whether to stream.
// The messages list includes system messages and user messages.
const data = {
  model: model,
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hi" },
  ],
  stream: true,
};

// Create the AIOS API's v1/chat/completions endpoint URL.
let url = new URL("/v1/chat/completions", aios_base_url);

// Send a POST request to the AIOS API.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});

// You can receive responses as the model generates tokens.
// Convert the response body to a text decoder stream and read it.
const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
let buf = "";
while (true) {
  const { value, done } = await reader.read();
  if (done) break;

  // Add received data to buffer.
  buf += value;
  let sep;
  // Find newline characters (\n\n) in the buffer and separate data.
  while ((sep = buf.indexOf("\n\n")) >= 0) {
    const data = buf.slice(0, sep);
    buf = buf.slice(sep + 2);

    // Process each line.
    for (const rawLine of data.split("\n")) {
      const line = rawLine.trim();
      if (!line.startsWith("data: ")) continue;
      
	  // Remove the "data: " prefix and extract JSON data.
      const payload = line.slice("data: ".length).trim();
      if (payload === "[DONE]") break;

	  // Parse the JSON data.
      const json = JSON.parse(payload);

	  // Output the delta (choices[0].delta).
	  // The delta is the response token generated by the AI model.
      console.log(json.choices[0].delta);
    }
  }
}
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a chat completion using the AIOS model.
// model parameter specifies the model ID to use.
// messages parameter is a list of messages including system and user messages.
// Set stream: true to receive real-time streaming responses.
const response = await client.chat.completions.create({
  model: model,
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hi" },
  ],
  stream: true,
});

// You can receive responses as the model generates tokens.
// Use for await...of loop to sequentially process stream events.
for await (const event of response) {
  // Output the delta (choices[0].delta).
  // The delta is the response token generated by the AI model.
  console.log(event.choices[0].delta);
}
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a chat completion using the AIOS model.
// model parameter specifies the model ID to use.
// messages parameter is a list of messages including system and user messages.
// Set stream: true to receive real-time streaming responses.
const response = await client.chat.completions.create({
  model: model,
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hi" },
  ],
  stream: true,
});

// You can receive responses as the model generates tokens.
// Use for await...of loop to sequentially process stream events.
for await (const event of response) {
  // Output the delta (choices[0].delta).
  // The delta is the response token generated by the AI model.
  console.log(event.choices[0].delta);
}
import { ChatOpenAI } from "@langchain/openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
// model parameter specifies the model ID to use.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// configuration.baseURL points to the v1 endpoint of the AIOS API.
const llm = new ChatOpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Configure the chat messages list.
// Include system messages and user messages.
const messages = [
  { role: "system", content: "You are a helpful assistant." },
  { role: "user", content: "Hi" },
];

// You can receive responses as the model generates tokens.
// The llm.stream method returns a stream that generates tokens in real-time.
const completion = await llm.stream(messages);

for await (const chunk of completion) {
  // Output the content of each chunk.
  // This content is the response token generated by the AI model.
  console.log(chunk.content);
}
import { ChatOpenAI } from "@langchain/openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
// model parameter specifies the model ID to use.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// configuration.baseURL points to the v1 endpoint of the AIOS API.
const llm = new ChatOpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Configure the chat messages list.
// Include system messages and user messages.
const messages = [
  { role: "system", content: "You are a helpful assistant." },
  { role: "user", content: "Hi" },
];

// You can receive responses as the model generates tokens.
// The llm.stream method returns a stream that generates tokens in real-time.
const completion = await llm.stream(messages);

for await (const chunk of completion) {
  // Output the content of each chunk.
  // This content is the response token generated by the AI model.
  console.log(chunk.content);
}
package main

import (
	"bufio"
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the message structure.
// Role: Message role (e.g., system, user)
// Content: Message content
type Message struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

// Define the data structure to be used for POST requests.
// Model: Model ID to use
// Messages: List of messages
// Stream: Whether to stream response (optional)
type PostData struct {
	Model    string    `json:"model"`
	Messages []Message `json:"messages"`
	Stream   bool      `json:"stream,omitempty"`
}

func main() {
	// Create request data.
	// The messages list includes system messages and user messages.
	// Set Stream: true to receive real-time streaming responses.
	data := PostData{
		Model: model,
		Messages: []Message{
			{
				Role:    "system",
				Content: "You are a helpful assistant.",
			},
			{
				Role:    "user",
				Content: "Hi",
			},
		},
		Stream: true,
	}

	// Marshal data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/chat/completions endpoint.
	response, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// You can receive responses as the model generates tokens.
	// Scan the HTTP response body and process line by line.
	var v map[string]interface{}
	scanner := bufio.NewScanner(response.Body)
	for scanner.Scan() {
		line := bytes.TrimSpace(scanner.Bytes())

		// Skip lines that don't start with "data: ".
		if !bytes.HasPrefix(line, []byte("data: ")) {
			continue
		}

		// Remove the "data: " prefix.
		payload := bytes.TrimPrefix(line, []byte("data: "))

		// If payload is "[DONE]", end streaming.
		if bytes.Equal(payload, []byte("[DONE]")) {
			break
		}

		// Parse the JSON data.
		json.Unmarshal(payload, &v)
		// Extract the choices array from the response.
		choices := v["choices"].([]interface{})
		// Extract the first data.
		choice := choices[0].(map[string]interface{})
		// Serialize the delta to JSON format and output it.
		message, err := json.Marshal(choice["delta"])
		if err != nil {
			panic(err)
		}
		fmt.Println(string(message))
	}
}
package main

import (
	"bufio"
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the message structure.
// Role: Message role (e.g., system, user)
// Content: Message content
type Message struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

// Define the data structure to be used for POST requests.
// Model: Model ID to use
// Messages: List of messages
// Stream: Whether to stream response (optional)
type PostData struct {
	Model    string    `json:"model"`
	Messages []Message `json:"messages"`
	Stream   bool      `json:"stream,omitempty"`
}

func main() {
	// Create request data.
	// The messages list includes system messages and user messages.
	// Set Stream: true to receive real-time streaming responses.
	data := PostData{
		Model: model,
		Messages: []Message{
			{
				Role:    "system",
				Content: "You are a helpful assistant.",
			},
			{
				Role:    "user",
				Content: "Hi",
			},
		},
		Stream: true,
	}

	// Marshal data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/chat/completions endpoint.
	response, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// You can receive responses as the model generates tokens.
	// Scan the HTTP response body and process line by line.
	var v map[string]interface{}
	scanner := bufio.NewScanner(response.Body)
	for scanner.Scan() {
		line := bytes.TrimSpace(scanner.Bytes())

		// Skip lines that don't start with "data: ".
		if !bytes.HasPrefix(line, []byte("data: ")) {
			continue
		}

		// Remove the "data: " prefix.
		payload := bytes.TrimPrefix(line, []byte("data: "))

		// If payload is "[DONE]", end streaming.
		if bytes.Equal(payload, []byte("[DONE]")) {
			break
		}

		// Parse the JSON data.
		json.Unmarshal(payload, &v)
		// Extract the choices array from the response.
		choices := v["choices"].([]interface{})
		// Extract the first data.
		choice := choices[0].(map[string]interface{})
		// Serialize the delta to JSON format and output it.
		message, err := json.Marshal(choice["delta"])
		if err != nil {
			panic(err)
		}
		fmt.Println(string(message))
	}
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// Use option.WithBaseURL to set the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate a streaming chat completion using the AIOS model.
	// Use openai.ChatCompletionNewParams to set the model and messages list.
	completion := client.Chat.Completions.NewStreaming(context.TODO(), openai.ChatCompletionNewParams{
		Model: model,
		Messages: []openai.ChatCompletionMessageParamUnion{
			openai.SystemMessage("You are a helpful assistant."),
			openai.UserMessage("Hi"),
		},
	})

	// You can receive responses as the model generates tokens.
	// The Next() method returns true when there is a next chunk.
	for completion.Next() {
		// Get the choices slice of the current chunk.
		chunk := completion.Current().Choices
		// choices[0].text is the response text generated by the AI model.
		fmt.Println(chunk[0].Message.Content)
	}
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// Use option.WithBaseURL to set the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate a streaming chat completion using the AIOS model.
	// Use openai.ChatCompletionNewParams to set the model and messages list.
	completion := client.Chat.Completions.NewStreaming(context.TODO(), openai.ChatCompletionNewParams{
		Model: model,
		Messages: []openai.ChatCompletionMessageParamUnion{
			openai.SystemMessage("You are a helpful assistant."),
			openai.UserMessage("Hi"),
		},
	})

	// You can receive responses as the model generates tokens.
	// The Next() method returns true when there is a next chunk.
	for completion.Next() {
		// Get the choices slice of the current chunk.
		chunk := completion.Current().Choices
		// choices[0].text is the response text generated by the AI model.
		fmt.Println(chunk[0].Message.Content)
	}
}
Code Block. /v1/chat/completions stream request request

Response

Answers are generated for each token, and each token can be checked in the text field of choices.

 I
'm
 looking
 for
 a
 way
 to
 check
 if
 a
 specific
 process
 is
 running
 on
}

tool calling

Tool Calling allows the model to call external functions to perform specific tasks.

The model analyzes the user’s request, selects the necessary tools, and generates the arguments as a response to call those tools.

After executing the actual tool using the tool call message generated by the model, you compose the result as a tool message and request the model again, then the model generates a natural response to the user based on the tool execution results.

tool calling sequence diagram
Fig. tool calling sequence diagram
Note
  • The openai/gpt-oss-120b model does not support the tool calling feature.

Request

Color mode
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Define a function to get weather information.
# This function returns the current temperature in Celsius for the provided coordinates.
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get current temperature for provided coordinates in celsius.",
        "parameters": {
            "type": "object",
            "properties": {
                "latitude": {"type": "number"},
                "longitude": {"type": "number"}
            },
            "required": ["latitude", "longitude"],
            "additionalProperties": False
        },
        "strict": True
    }
}]

# Define the user message.
# The user is asking about today's weather in Paris.
messages = [{"role": "user", "content": "What is the weather like in Paris today?"}]

# Configure the request data.
# This includes the model ID to use, the messages list, and the tools list.
data = {
  "model": model,
  "messages": messages,
  "tools": tools
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
# This request instructs the model to process the user's question and determine the necessary tool calls.
response = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data)

# Parse the response body in JSON format.
body = json.loads(response.text)
# Print the tool call information from the response generated by the AI model.
# This information indicates which tool the model should call.
print(body["choices"][0]["message"]["tool_calls"])

# Implementation of the weather function, always returns 14 degrees.
def get_weather(latitude, longitude):
  return "14℃"

# Extract tool call information from the first response.
# This retrieves the tool call information requested by the model.
tool_call = body["choices"][0]["message"]["tool_calls"][0]

# Parse the arguments of the tool call from JSON string format to dict format.
args = json.loads(tool_call["function"]["arguments"])

# Call the actual function to get the result. (e.g., "14℃")
# At this step, the actual weather information lookup logic is executed.
result = get_weather(args["latitude"], args["longitude"]) # "14℃"

# Add the function call result as a **tool** message to the conversation context and call the model again,
# then the model generates an appropriate response using the function call result.
# Add the model's tool call message to messages to maintain the conversation context.
messages.append(body["choices"][0]["message"])

# Add the result of calling the actual function to messages.
# This allows the model to generate a final response based on the tool call result.
messages.append({
  "role": "tool",
  "tool_call_id": tool_call["id"],
  "content": str(result)
})

# Configure the second request data.
# This includes the model ID to use and the updated messages list.
data = {
  "model": model,
  "messages": messages,
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
# This request generates a final response based on the tool call result.
response_2 = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data)

# Parse the response body in JSON format.
body = json.loads(response_2.text)
# Print the message generated by the AI in the second response.
# This is the final answer to the user's question.
print(body["choices"][0]["message"])
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Define a function to get weather information.
# This function returns the current temperature in Celsius for the provided coordinates.
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get current temperature for provided coordinates in celsius.",
        "parameters": {
            "type": "object",
            "properties": {
                "latitude": {"type": "number"},
                "longitude": {"type": "number"}
            },
            "required": ["latitude", "longitude"],
            "additionalProperties": False
        },
        "strict": True
    }
}]

# Define the user message.
# The user is asking about today's weather in Paris.
messages = [{"role": "user", "content": "What is the weather like in Paris today?"}]

# Configure the request data.
# This includes the model ID to use, the messages list, and the tools list.
data = {
  "model": model,
  "messages": messages,
  "tools": tools
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
# This request instructs the model to process the user's question and determine the necessary tool calls.
response = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data)

# Parse the response body in JSON format.
body = json.loads(response.text)
# Print the tool call information from the response generated by the AI model.
# This information indicates which tool the model should call.
print(body["choices"][0]["message"]["tool_calls"])

# Implementation of the weather function, always returns 14 degrees.
def get_weather(latitude, longitude):
  return "14℃"

# Extract tool call information from the first response.
# This retrieves the tool call information requested by the model.
tool_call = body["choices"][0]["message"]["tool_calls"][0]

# Parse the arguments of the tool call from JSON string format to dict format.
args = json.loads(tool_call["function"]["arguments"])

# Call the actual function to get the result. (e.g., "14℃")
# At this step, the actual weather information lookup logic is executed.
result = get_weather(args["latitude"], args["longitude"]) # "14℃"

# Add the function call result as a **tool** message to the conversation context and call the model again,
# then the model generates an appropriate response using the function call result.
# Add the model's tool call message to messages to maintain the conversation context.
messages.append(body["choices"][0]["message"])

# Add the result of calling the actual function to messages.
# This allows the model to generate a final response based on the tool call result.
messages.append({
  "role": "tool",
  "tool_call_id": tool_call["id"],
  "content": str(result)
})

# Configure the second request data.
# This includes the model ID to use and the updated messages list.
data = {
  "model": model,
  "messages": messages,
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
# This request generates a final response based on the tool call result.
response_2 = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data)

# Parse the response body in JSON format.
body = json.loads(response_2.text)
# Print the message generated by the AI in the second response.
# This is the final answer to the user's question.
print(body["choices"][0]["message"])
import json
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Define a function to get weather information.
# This function returns the current temperature in Celsius for the provided coordinates.
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get current temperature for provided coordinates in celsius.",
        "parameters": {
            "type": "object",
            "properties": {
                "latitude": {"type": "number"},
                "longitude": {"type": "number"}
            },
            "required": ["latitude", "longitude"],
            "additionalProperties": False
        },
        "strict": True
    }
}]

# Define the user message.
# The user is asking about today's weather in Paris.
messages = [{"role": "user", "content": "What is the weather like in Paris today?"}]

# Generate a chat completion using the AIOS model.
# The model parameter specifies the model ID to use.
# The messages parameter is a list of messages containing the user message.
# The tools parameter provides metadata about the tools available to the model.
response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools # Provides metadata about the tools available to the model.
)

# Print the tool call information from the response generated by the AI model.
# This information indicates which tool the model should call.
print(response.choices[0].message.tool_calls[0].model_dump())

# Implementation of the weather function, always returns 14 degrees.
def get_weather(latitude, longitude):
  return "14℃"

# Extract tool call information from the first response.
# This retrieves the tool call information requested by the model.
tool_call = response.choices[0].message.tool_calls[0]

# Parse the tool call arguments in JSON format.
args = json.loads(tool_call.function.arguments)

# Call the actual function to get the result. (e.g., "14℃")
# At this step, the actual weather information lookup logic is executed.
result = get_weather(args["latitude"], args["longitude"]) # "14℃"

# Add the function call result as a **tool** message to the conversation context and call the model again,
# then the model generates an appropriate response using the function call result.
# Add the model's tool call message to messages to maintain the conversation context.
messages.append(response.choices[0].message)

# Add the result of calling the actual function to messages.
# This allows the model to generate a final response based on the tool call result.
messages.append({
    "role": "tool",
    "tool_call_id": tool_call.id,
    "content": str(result)
})

# Generate a second chat completion.
# This includes the model ID to use and the updated messages list.
# This request generates a final response based on the tool call result.
response_2 = client.chat.completions.create(
    model=model,
    messages=messages,
)

# Print the message generated by the AI in the second response.
# This is the final answer to the user's question.
print(response_2.choices[0].message.model_dump())
import json
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Define a function to get weather information.
# This function returns the current temperature in Celsius for the provided coordinates.
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get current temperature for provided coordinates in celsius.",
        "parameters": {
            "type": "object",
            "properties": {
                "latitude": {"type": "number"},
                "longitude": {"type": "number"}
            },
            "required": ["latitude", "longitude"],
            "additionalProperties": False
        },
        "strict": True
    }
}]

# Define the user message.
# The user is asking about today's weather in Paris.
messages = [{"role": "user", "content": "What is the weather like in Paris today?"}]

# Generate a chat completion using the AIOS model.
# The model parameter specifies the model ID to use.
# The messages parameter is a list of messages containing the user message.
# The tools parameter provides metadata about the tools available to the model.
response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools # Provides metadata about the tools available to the model.
)

# Print the tool call information from the response generated by the AI model.
# This information indicates which tool the model should call.
print(response.choices[0].message.tool_calls[0].model_dump())

# Implementation of the weather function, always returns 14 degrees.
def get_weather(latitude, longitude):
  return "14℃"

# Extract tool call information from the first response.
# This retrieves the tool call information requested by the model.
tool_call = response.choices[0].message.tool_calls[0]

# Parse the tool call arguments in JSON format.
args = json.loads(tool_call.function.arguments)

# Call the actual function to get the result. (e.g., "14℃")
# At this step, the actual weather information lookup logic is executed.
result = get_weather(args["latitude"], args["longitude"]) # "14℃"

# Add the function call result as a **tool** message to the conversation context and call the model again,
# then the model generates an appropriate response using the function call result.
# Add the model's tool call message to messages to maintain the conversation context.
messages.append(response.choices[0].message)

# Add the result of calling the actual function to messages.
# This allows the model to generate a final response based on the tool call result.
messages.append({
    "role": "tool",
    "tool_call_id": tool_call.id,
    "content": str(result)
})

# Generate a second chat completion.
# This includes the model ID to use and the updated messages list.
# This request generates a final response based on the tool call result.
response_2 = client.chat.completions.create(
    model=model,
    messages=messages,
)

# Print the message generated by the AI in the second response.
# This is the final answer to the user's question.
print(response_2.choices[0].message.model_dump())
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Define a tool function to get weather information.
# This function returns the current temperature in Celsius for the provided coordinates.
@tool
def get_weather(latitude: float, longitude: float) -> str:
  """Get current temperature for provided coordinates in celsius."""
  return "14℃"

# Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# The model parameter specifies the model ID to use.
chat_llm = ChatOpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Bind tools to the model.
# The get_weather function returns the current temperature in Celsius for the provided coordinates.
llm_with_tools = chat_llm.bind_tools([get_weather])

# Configure the list of chat messages.
# The user is asking about today's weather in Paris.
messages = [("human", "What is the weather like in Paris today?")]

# Pass the list of messages to the chat LLM to get a response.
# The invoke method returns the model's output.
# At this step, the model analyzes the user's question and determines the necessary tool calls.
response = llm_with_tools.invoke(messages)

# Print the tool call information from the response generated by the AI model.
# This information indicates which tool the model should call.
print(response.tool_calls)

# Add the model's tool call message to messages to maintain the conversation context.
# This allows the model to remember and connect previous conversation content.
messages.append(response)

# Call the actual tool function to get the result.
# At this step, the get_weather function is executed to return weather information.
tool_call = response.tool_calls[0]
tool_message = get_weather.invoke(tool_call)

# Add the tool call result to messages.
# This allows the model to generate a final response based on the tool call result.
messages.append(tool_message)

# Perform a second request to get the final answer.
# Now the model generates an appropriate response to the user based on the tool call result.
response2 = chat_llm.invoke(messages)
# Print the final AI model response.
# This is the final answer to the user's question.
print(response2.model_dump())
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Define a tool function to get weather information.
# This function returns the current temperature in Celsius for the provided coordinates.
@tool
def get_weather(latitude: float, longitude: float) -> str:
  """Get current temperature for provided coordinates in celsius."""
  return "14℃"

# Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# The model parameter specifies the model ID to use.
chat_llm = ChatOpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Bind tools to the model.
# The get_weather function returns the current temperature in Celsius for the provided coordinates.
llm_with_tools = chat_llm.bind_tools([get_weather])

# Configure the list of chat messages.
# The user is asking about today's weather in Paris.
messages = [("human", "What is the weather like in Paris today?")]

# Pass the list of messages to the chat LLM to get a response.
# The invoke method returns the model's output.
# At this step, the model analyzes the user's question and determines the necessary tool calls.
response = llm_with_tools.invoke(messages)

# Print the tool call information from the response generated by the AI model.
# This information indicates which tool the model should call.
print(response.tool_calls)

# Add the model's tool call message to messages to maintain the conversation context.
# This allows the model to remember and connect previous conversation content.
messages.append(response)

# Call the actual tool function to get the result.
# At this step, the get_weather function is executed to return weather information.
tool_call = response.tool_calls[0]
tool_message = get_weather.invoke(tool_call)

# Add the tool call result to messages.
# This allows the model to generate a final response based on the tool call result.
messages.append(tool_message)

# Perform a second request to get the final answer.
# Now the model generates an appropriate response to the user based on the tool call result.
response2 = chat_llm.invoke(messages)
# Print the final AI model response.
# This is the final answer to the user's question.
print(response2.model_dump())
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Define a function to get weather information.
// This function returns the current temperature in Celsius for the provided coordinates.
const tools = [
  {
    type: "function",
    function: {
      name: "get_weather",
      description:
        "Get current temperature for provided coordinates in celsius.",
      parameters: {
        type: "object",
        properties: {
          latitude: { type: "number" },
          longitude: { type: "number" },
        },
        required: ["latitude", "longitude"],
        additionalProperties: false,
      },
      strict: true,
    },
  },
];

// Define the user message.
// The user is asking about today's weather in Paris.
const messages = [
  { role: "user", content: "What is the weather like in Paris today?" },
];

// Configure the request data.
// This includes the model ID to use, the messages list, and the tools list.
let data = {
  model: model,
  messages: messages,
  tools: tools,
};

// Generate the AIOS API's v1/chat/completions endpoint URL.
let url = new URL("/v1/chat/completions", aios_base_url);

// Send a POST request to the AIOS API.
// This request instructs the model to process the user's question and determine the necessary tool calls.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});

// Parse the response body in JSON format.
let body = await response.json();
// Print the tool call information from the response generated by the AI model.
// This information indicates which tool the model should call.
console.log(JSON.stringify(body.choices[0].message.tool_calls));

// Implementation of the weather function, always returns 14 degrees.
function getWeather(latitude, longitude) {
  return "14℃";
}

// Extract tool call information from the first response.
// This retrieves the tool call information requested by the model.
const toolCall = body.choices[0].message.tool_calls[0];
// Parse the tool call arguments in JSON format.
// This extracts the parameters needed for the tool call.
const args = JSON.parse(toolCall.function.arguments);

// Call the actual function to get the result. (e.g., "14℃")
// At this step, the actual weather information lookup logic is executed.
const result = getWeather(args.latitude, args.longitude);

// Add the function call result as a **tool** message to the conversation context and call the model again,
// then the model generates an appropriate response using the function call result.
// Add the model's tool call message to messages to maintain the conversation context.
messages.push(body.choices[0].message);

// Add the result of calling the actual function to messages.
// This allows the model to generate a final response based on the tool call result.
messages.push({
  role: "tool",
  tool_call_id: toolCall.id,
  content: String(result),
});

// Configure the second request data.
// This includes the model ID to use and the updated messages list.
// This request generates a final response based on the tool call result.
data = {
  model: model,
  messages: messages,
};

// Send another POST request to the AIOS API.
// This request generates a final response based on the tool call result.
const response2 = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});
body = await response2.json();
// Print the message generated by the AI in the second response.
// This is the final answer to the user's question.
console.log(JSON.stringify(body.choices[0].message));
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Define a function to get weather information.
// This function returns the current temperature in Celsius for the provided coordinates.
const tools = [
  {
    type: "function",
    function: {
      name: "get_weather",
      description:
        "Get current temperature for provided coordinates in celsius.",
      parameters: {
        type: "object",
        properties: {
          latitude: { type: "number" },
          longitude: { type: "number" },
        },
        required: ["latitude", "longitude"],
        additionalProperties: false,
      },
      strict: true,
    },
  },
];

// Define the user message.
// The user is asking about today's weather in Paris.
const messages = [
  { role: "user", content: "What is the weather like in Paris today?" },
];

// Configure the request data.
// This includes the model ID to use, the messages list, and the tools list.
let data = {
  model: model,
  messages: messages,
  tools: tools,
};

// Generate the AIOS API's v1/chat/completions endpoint URL.
let url = new URL("/v1/chat/completions", aios_base_url);

// Send a POST request to the AIOS API.
// This request instructs the model to process the user's question and determine the necessary tool calls.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});

// Parse the response body in JSON format.
let body = await response.json();
// Print the tool call information from the response generated by the AI model.
// This information indicates which tool the model should call.
console.log(JSON.stringify(body.choices[0].message.tool_calls));

// Implementation of the weather function, always returns 14 degrees.
function getWeather(latitude, longitude) {
  return "14℃";
}

// Extract tool call information from the first response.
// This retrieves the tool call information requested by the model.
const toolCall = body.choices[0].message.tool_calls[0];
// Parse the tool call arguments in JSON format.
// This extracts the parameters needed for the tool call.
const args = JSON.parse(toolCall.function.arguments);

// Call the actual function to get the result. (e.g., "14℃")
// At this step, the actual weather information lookup logic is executed.
const result = getWeather(args.latitude, args.longitude);

// Add the function call result as a **tool** message to the conversation context and call the model again,
// then the model generates an appropriate response using the function call result.
// Add the model's tool call message to messages to maintain the conversation context.
messages.push(body.choices[0].message);

// Add the result of calling the actual function to messages.
// This allows the model to generate a final response based on the tool call result.
messages.push({
  role: "tool",
  tool_call_id: toolCall.id,
  content: String(result),
});

// Configure the second request data.
// This includes the model ID to use and the updated messages list.
// This request generates a final response based on the tool call result.
data = {
  model: model,
  messages: messages,
};

// Send another POST request to the AIOS API.
// This request generates a final response based on the tool call result.
const response2 = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});
body = await response2.json();
// Print the message generated by the AI in the second response.
// This is the final answer to the user's question.
console.log(JSON.stringify(body.choices[0].message));
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Define a function to get weather information.
// This function returns the current temperature in Celsius for the provided coordinates.
const tools = [
  {
    type: "function",
    function: {
      name: "get_weather",
      description:
        "Get current temperature for provided coordinates in celsius.",
      parameters: {
        type: "object",
        properties: {
          latitude: { type: "number" },
          longitude: { type: "number" },
        },
        required: ["latitude", "longitude"],
        additionalProperties: false,
      },
      strict: true,
    },
  },
];

// Define the user message.
// The user is asking about today's weather in Paris.
const messages = [
  { role: "user", content: "What is the weather like in Paris today?" },
];

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a chat completion using the AIOS model.
// The model parameter specifies the model ID to use.
// The messages parameter is a list of messages containing the user message.
// The tools parameter provides metadata about the tools available to the model.
const response = await client.chat.completions.create({
  model: model,
  messages: messages,
  tools: tools,
});

// Print the tool call information from the response generated by the AI model.
// This information indicates which tool the model should call.
console.log(JSON.stringify(response.choices[0].message.tool_calls));

// Implementation of the weather function, always returns 14 degrees.
function getWeather(latitude, longitude) {
  return "14℃";
}

// Extract tool call information from the first response.
// This retrieves the tool call information requested by the model.
const toolCall = response.choices[0].message.tool_calls[0];
// Parse the tool call arguments in JSON format.
// This extracts the parameters needed for the tool call.
const args = JSON.parse(toolCall.function.arguments);

// Call the actual function to get the result. (e.g., "14℃")
// At this step, the actual weather information lookup logic is executed.
const result = getWeather(args.latitude, args.longitude);

// Add the function call result as a **tool** message to the conversation context and call the model again,
// then the model generates an appropriate response using the function call result.
// Add the model's tool call message to messages to maintain the conversation context.
messages.push(response.choices[0].message);

// Add the result of calling the actual function to messages.
// This allows the model to generate a final response based on the tool call result.
messages.push({
  role: "tool",
  tool_call_id: toolCall.id,
  content: String(result),
});

// Generate a second chat completion.
// This includes the model ID to use and the updated messages list.
// This request generates a final response based on the tool call result.
const response2 = await client.chat.completions.create({
  model: model,
  messages: messages,
});

// Print the message generated by the AI in the second response.
// This is the final answer to the user's question.
console.log(JSON.stringify(response2.choices[0].message));
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Define a function to get weather information.
// This function returns the current temperature in Celsius for the provided coordinates.
const tools = [
  {
    type: "function",
    function: {
      name: "get_weather",
      description:
        "Get current temperature for provided coordinates in celsius.",
      parameters: {
        type: "object",
        properties: {
          latitude: { type: "number" },
          longitude: { type: "number" },
        },
        required: ["latitude", "longitude"],
        additionalProperties: false,
      },
      strict: true,
    },
  },
];

// Define the user message.
// The user is asking about today's weather in Paris.
const messages = [
  { role: "user", content: "What is the weather like in Paris today?" },
];

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a chat completion using the AIOS model.
// The model parameter specifies the model ID to use.
// The messages parameter is a list of messages containing the user message.
// The tools parameter provides metadata about the tools available to the model.
const response = await client.chat.completions.create({
  model: model,
  messages: messages,
  tools: tools,
});

// Print the tool call information from the response generated by the AI model.
// This information indicates which tool the model should call.
console.log(JSON.stringify(response.choices[0].message.tool_calls));

// Implementation of the weather function, always returns 14 degrees.
function getWeather(latitude, longitude) {
  return "14℃";
}

// Extract tool call information from the first response.
// This retrieves the tool call information requested by the model.
const toolCall = response.choices[0].message.tool_calls[0];
// Parse the tool call arguments in JSON format.
// This extracts the parameters needed for the tool call.
const args = JSON.parse(toolCall.function.arguments);

// Call the actual function to get the result. (e.g., "14℃")
// At this step, the actual weather information lookup logic is executed.
const result = getWeather(args.latitude, args.longitude);

// Add the function call result as a **tool** message to the conversation context and call the model again,
// then the model generates an appropriate response using the function call result.
// Add the model's tool call message to messages to maintain the conversation context.
messages.push(response.choices[0].message);

// Add the result of calling the actual function to messages.
// This allows the model to generate a final response based on the tool call result.
messages.push({
  role: "tool",
  tool_call_id: toolCall.id,
  content: String(result),
});

// Generate a second chat completion.
// This includes the model ID to use and the updated messages list.
// This request generates a final response based on the tool call result.
const response2 = await client.chat.completions.create({
  model: model,
  messages: messages,
});

// Print the message generated by the AI in the second response.
// This is the final answer to the user's question.
console.log(JSON.stringify(response2.choices[0].message));
import { HumanMessage } from "@langchain/core/messages";
import { tool } from "@langchain/core/tools";
import { ChatOpenAI } from "@langchain/openai";
import { z } from "zod";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Define a tool function to get weather information.
// This function returns the current temperature in Celsius for the provided coordinates.
const getWeather = tool(
  function (latitude, longitude) {
    /**
     * Get current temperature for provided coordinates in celsius.
     */
    return "14℃";
  },
  {
    name: "get_weather",
    description: "Get current temperature for provided coordinates in celsius.",
    schema: z.object({
      latitude: z.number(),
      longitude: z.number(),
    }),
  }
);

// Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
// base_url points to the v1 endpoint of the AIOS API,
// and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
// The model parameter specifies the model ID to use.
const llm = new ChatOpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Bind tools to the model.
// The getWeather function returns the current temperature in Celsius for the provided coordinates.
const llmWithTools = llm.bindTools([getWeather]);

// Configure the list of chat messages.
// The user is asking about today's weather in Paris.
const messages = [new HumanMessage("What is the weather like in Paris today?")];

// Pass the list of messages to the chat LLM to get a response.
// The invoke method returns the model's output.
// This request instructs the model to process the user's question and determine the necessary tool calls.
const response = await llmWithTools.invoke(messages);

// Print the tool call information from the response generated by the AI model.
// This information indicates which tool the model should call.
console.log(response.tool_calls);

// Add the model's tool call message to messages to maintain the conversation context.
// This allows the model to remember and connect previous conversation content.
messages.push(response);

// Call the actual tool function to get the result.
// At this step, the getWeather function is executed to return weather information.
const toolCall = response.tool_calls[0];
const toolMessage = await getWeather.invoke(toolCall);

// Add the tool call result to messages.
// This allows the model to generate a final response based on the tool call result.
messages.push(toolMessage);

// Perform a second request to get the final answer.
// Now the model generates an appropriate response to the user based on the tool call result.
const response2 = await llm.invoke(messages);
// Print the final AI model response.
console.log(response2.content);
import { HumanMessage } from "@langchain/core/messages";
import { tool } from "@langchain/core/tools";
import { ChatOpenAI } from "@langchain/openai";
import { z } from "zod";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Define a tool function to get weather information.
// This function returns the current temperature in Celsius for the provided coordinates.
const getWeather = tool(
  function (latitude, longitude) {
    /**
     * Get current temperature for provided coordinates in celsius.
     */
    return "14℃";
  },
  {
    name: "get_weather",
    description: "Get current temperature for provided coordinates in celsius.",
    schema: z.object({
      latitude: z.number(),
      longitude: z.number(),
    }),
  }
);

// Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
// base_url points to the v1 endpoint of the AIOS API,
// and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
// The model parameter specifies the model ID to use.
const llm = new ChatOpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Bind tools to the model.
// The getWeather function returns the current temperature in Celsius for the provided coordinates.
const llmWithTools = llm.bindTools([getWeather]);

// Configure the list of chat messages.
// The user is asking about today's weather in Paris.
const messages = [new HumanMessage("What is the weather like in Paris today?")];

// Pass the list of messages to the chat LLM to get a response.
// The invoke method returns the model's output.
// This request instructs the model to process the user's question and determine the necessary tool calls.
const response = await llmWithTools.invoke(messages);

// Print the tool call information from the response generated by the AI model.
// This information indicates which tool the model should call.
console.log(response.tool_calls);

// Add the model's tool call message to messages to maintain the conversation context.
// This allows the model to remember and connect previous conversation content.
messages.push(response);

// Call the actual tool function to get the result.
// At this step, the getWeather function is executed to return weather information.
const toolCall = response.tool_calls[0];
const toolMessage = await getWeather.invoke(toolCall);

// Add the tool call result to messages.
// This allows the model to generate a final response based on the tool call result.
messages.push(toolMessage);

// Perform a second request to get the final answer.
// Now the model generates an appropriate response to the user based on the tool call result.
const response2 = await llm.invoke(messages);
// Print the final AI model response.
console.log(response2.content);
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the Message structure.
// Role: Message role (user, assistant, tool, etc.)
// Content: Message content
// ToolCalls: Tool call information
// ToolCallId: Tool call identifier
type Message struct {
	Role       string           `json:"role"`
	Content    string           `json:"content,omitempty"`
	ToolCalls  []map[string]any `json:"tool_calls,omitempty"`
	ToolCallId string           `json:"tool_call_id,omitempty"`
}

// Define the POST request data structure.
// Model: Model ID to use
// Messages: List of messages
// Tools: List of available tools
// Stream: Whether to stream
type PostData struct {
	Model    string           `json:"model"`
	Messages []Message        `json:"messages"`
	Tools    []map[string]any `json:"tools,omitempty"`
	Stream   bool             `json:"stream,omitempty"`
}

// Define a function to get weather information.
// This function always returns 14 degrees (sample implementation).
func getWeather(latitude float32, longitude float32) string {
	_ = fmt.Sprintf("latitude: %f, longitude: %f", latitude, longitude)
	return "14℃"
}

func main() {
	// Define the user message.
	// The user is asking about today's weather in Paris.
	messages := []Message{
		{
			Role:    "user",
			Content: "What is the weather like in Paris today?",
		},
	}

	// Define a function to get weather information.
	// This tool returns the current temperature in Celsius for the provided coordinates.
	tools := []map[string]any{
		{
			"type": "function",
			"function": map[string]any{
				"name":        "get_weather",
				"description": "Get current temperature for provided coordinates in celsius.",
				"parameters": map[string]any{
					"type": "object",
					"properties": map[string]any{
						"latitude":  map[string]string{"type": "number"},
						"longitude": map[string]string{"type": "number"},
					},
					"required":             []string{"latitude", "longitude"},
					"additionalProperties": false,
				},
				"strict": true,
			},
		},
	}

	// Configure the request data.
	// This includes the model ID to use, the messages list, and the tools list.
	data := PostData{
		Model:    model,
		Messages: messages,
		Tools:    tools,
	}
	// Serialize the request data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/chat/completions endpoint.
	// This request instructs the model to process the user's question and determine the necessary tool calls.
	response, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Parse the response body to map format.
	var v map[string]interface{}
	json.Unmarshal(body, &v)
	// Extract message information from the first response.
	choices := v["choices"].([]interface{})
	choice := choices[0].(map[string]interface{})
	message, err := json.MarshalIndent(choice["message"], "", "  ")
	if err != nil {
		panic(err)
	}
	messageData := choice["message"].(map[string]interface{})
	toolCalls := messageData["tool_calls"].([]interface{})
	
	// Print the tool call information from the response generated by the AI model.
	// This information indicates which tool the model should call.
	toolCallJson, err := json.MarshalIndent(toolCalls, "", " ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(toolCallJson))

	// Extract tool call information from the first response.
	// This retrieves the tool call information requested by the model.
	toolCall := toolCalls[0].(map[string]interface{})
	function := toolCall["function"].(map[string]interface{})

	// Parse the tool call arguments from JSON string format to map format.
	// This extracts the parameters needed for the tool call.
	var args map[string]float32
	err = json.Unmarshal([]byte(function["arguments"].(string)), &args)
	if err != nil {
		panic(err)
	}

	// Call the actual function to get the result. (e.g., "14℃")
	// At this step, the actual weather information lookup logic is executed.
	result := getWeather(args["latitude"], args["longitude"])

	// Convert the tool call result to a message.
	var toolMessage Message
	err = json.Unmarshal(message, &toolMessage)
	if err != nil {
		panic(err)
	}

	// Add the model's tool call message to messages to maintain the conversation context.
	messages = append(messages, toolMessage)

	// Add the result of calling the actual function to messages.
	// This allows the model to generate a final response based on the tool call result.
	messages = append(messages, Message{
		Role:       "tool",
		ToolCallId: toolCall["id"].(string),
		Content:    string(result),
	})

	// Configure the second request data.
	// This includes the model ID to use and the updated messages list.
	// This request generates a final response based on the tool call result.
	data = PostData{
		Model:    model,
		Messages: messages,
	}

	jsonData, err = json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send another POST request to the AIOS API.
	// This request generates a final response based on the tool call result.
	response2, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response2.Body.Close()

	// Read the second response body.
	body, err = io.ReadAll(response2.Body)
	if err != nil {
		panic(err)
	}

	// Parse the second response to JSON format.
	json.Unmarshal(body, &v)
	// Print the message generated by the AI in the second response.
	// This is the final answer to the user's question.
	choices = v["choices"].([]interface{})
	choice = choices[0].(map[string]interface{})
	message, err = json.MarshalIndent(choice["message"], "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(message))
}
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the Message structure.
// Role: Message role (user, assistant, tool, etc.)
// Content: Message content
// ToolCalls: Tool call information
// ToolCallId: Tool call identifier
type Message struct {
	Role       string           `json:"role"`
	Content    string           `json:"content,omitempty"`
	ToolCalls  []map[string]any `json:"tool_calls,omitempty"`
	ToolCallId string           `json:"tool_call_id,omitempty"`
}

// Define the POST request data structure.
// Model: Model ID to use
// Messages: List of messages
// Tools: List of available tools
// Stream: Whether to stream
type PostData struct {
	Model    string           `json:"model"`
	Messages []Message        `json:"messages"`
	Tools    []map[string]any `json:"tools,omitempty"`
	Stream   bool             `json:"stream,omitempty"`
}

// Define a function to get weather information.
// This function always returns 14 degrees (sample implementation).
func getWeather(latitude float32, longitude float32) string {
	_ = fmt.Sprintf("latitude: %f, longitude: %f", latitude, longitude)
	return "14℃"
}

func main() {
	// Define the user message.
	// The user is asking about today's weather in Paris.
	messages := []Message{
		{
			Role:    "user",
			Content: "What is the weather like in Paris today?",
		},
	}

	// Define a function to get weather information.
	// This tool returns the current temperature in Celsius for the provided coordinates.
	tools := []map[string]any{
		{
			"type": "function",
			"function": map[string]any{
				"name":        "get_weather",
				"description": "Get current temperature for provided coordinates in celsius.",
				"parameters": map[string]any{
					"type": "object",
					"properties": map[string]any{
						"latitude":  map[string]string{"type": "number"},
						"longitude": map[string]string{"type": "number"},
					},
					"required":             []string{"latitude", "longitude"},
					"additionalProperties": false,
				},
				"strict": true,
			},
		},
	}

	// Configure the request data.
	// This includes the model ID to use, the messages list, and the tools list.
	data := PostData{
		Model:    model,
		Messages: messages,
		Tools:    tools,
	}
	// Serialize the request data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/chat/completions endpoint.
	// This request instructs the model to process the user's question and determine the necessary tool calls.
	response, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Parse the response body to map format.
	var v map[string]interface{}
	json.Unmarshal(body, &v)
	// Extract message information from the first response.
	choices := v["choices"].([]interface{})
	choice := choices[0].(map[string]interface{})
	message, err := json.MarshalIndent(choice["message"], "", "  ")
	if err != nil {
		panic(err)
	}
	messageData := choice["message"].(map[string]interface{})
	toolCalls := messageData["tool_calls"].([]interface{})
	
	// Print the tool call information from the response generated by the AI model.
	// This information indicates which tool the model should call.
	toolCallJson, err := json.MarshalIndent(toolCalls, "", " ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(toolCallJson))

	// Extract tool call information from the first response.
	// This retrieves the tool call information requested by the model.
	toolCall := toolCalls[0].(map[string]interface{})
	function := toolCall["function"].(map[string]interface{})

	// Parse the tool call arguments from JSON string format to map format.
	// This extracts the parameters needed for the tool call.
	var args map[string]float32
	err = json.Unmarshal([]byte(function["arguments"].(string)), &args)
	if err != nil {
		panic(err)
	}

	// Call the actual function to get the result. (e.g., "14℃")
	// At this step, the actual weather information lookup logic is executed.
	result := getWeather(args["latitude"], args["longitude"])

	// Convert the tool call result to a message.
	var toolMessage Message
	err = json.Unmarshal(message, &toolMessage)
	if err != nil {
		panic(err)
	}

	// Add the model's tool call message to messages to maintain the conversation context.
	messages = append(messages, toolMessage)

	// Add the result of calling the actual function to messages.
	// This allows the model to generate a final response based on the tool call result.
	messages = append(messages, Message{
		Role:       "tool",
		ToolCallId: toolCall["id"].(string),
		Content:    string(result),
	})

	// Configure the second request data.
	// This includes the model ID to use and the updated messages list.
	// This request generates a final response based on the tool call result.
	data = PostData{
		Model:    model,
		Messages: messages,
	}

	jsonData, err = json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send another POST request to the AIOS API.
	// This request generates a final response based on the tool call result.
	response2, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response2.Body.Close()

	// Read the second response body.
	body, err = io.ReadAll(response2.Body)
	if err != nil {
		panic(err)
	}

	// Parse the second response to JSON format.
	json.Unmarshal(body, &v)
	// Print the message generated by the AI in the second response.
	// This is the final answer to the user's question.
	choices = v["choices"].([]interface{})
	choice = choices[0].(map[string]interface{})
	message, err = json.MarshalIndent(choice["message"], "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(message))
}
package main

import (
	"context"
	"encoding/json"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define a function to get weather information.
// This function always returns 14 degrees (sample implementation).
func getWeather(latitude float32, longitude float32) string {
	_ = fmt.Sprintf("latitude: %f, longitude: %f", latitude, longitude)
	return "14℃"
}

func main() {
	// Create an OpenAI client.
	// base_url points to the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Define the user message.
	// The user is asking about today's weather in Paris.
	messages := []openai.ChatCompletionMessageParamUnion{
		openai.UserMessage("What is the weather like in Paris today?"),
	}

	// Generate a chat completion using the AIOS model.
	// The model parameter specifies the model ID to use.
	// The messages parameter is a list of messages containing the user message.
	// The tools parameter provides metadata about the tools available to the model.
	response, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
		Model:    model,
		Messages: messages,
		Tools: []openai.ChatCompletionToolParam{
			{
				Function: openai.FunctionDefinitionParam{
					Name:        "get_weather",
					Description: openai.String("Get current temperature for provided coordinates in celsius."),
					Parameters: openai.FunctionParameters{
						"type": "object",
						"properties": map[string]interface{}{
							"latitude": map[string]string{
								"type": "number",
							},
							"longitude": map[string]string{
								"type": "number",
							},
						},
						"required":             []string{"latitude", "longitude"},
						"additionalProperties": false,
					},
					Strict: openai.Bool(true),
				},
			},
		},
	})

	if err != nil {
		panic(err)
	}

	// Print the response generated by the AI model.
	// This response includes tool call information.
	fmt.Println([]string{response.Choices[0].Message.ToolCalls[0].RawJSON()})

	// Extract tool call information from the first response.
	// This retrieves the tool call information requested by the model.
	var v map[string]float32
	toolCall := response.Choices[0].Message.ToolCalls[0]
	args := toolCall.Function.Arguments

	// Parse the tool call arguments from JSON string format to map format.
	// This extracts the parameters needed for the tool call.
	err = json.Unmarshal([]byte(args), &v)
	if err != nil {
		panic(err)
	}

	// Call the actual function to get the result. (e.g., "14℃")
	// At this step, the actual weather information lookup logic is executed.
	result := getWeather(v["latitude"], v["longitude"])

	// Add the function call result as a **tool** message to the conversation context and call the model again,
	// then the model generates an appropriate response using the function call result.
	// Add the model's tool call message to messages to maintain the conversation context.
	messages = append(messages, response.Choices[0].Message.ToParam())

	// Add the result of calling the actual function to messages.
	// This allows the model to generate a final response based on the tool call result.
	messages = append(messages, openai.ToolMessage(string(result), toolCall.ID))

	// Generate a second chat completion.
	// This includes the model ID to use and the updated messages list.
	// This request generates a final response based on the tool call result.
	response2, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
		Model:    model,
		Messages: messages,
	})

	if err != nil {
		panic(err)
	}

	// Print the message generated by the AI in the second response.
	// This is the final answer to the user's question.
	fmt.Println(response2.Choices[0].Message.RawJSON())
}
package main

import (
	"context"
	"encoding/json"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define a function to get weather information.
// This function always returns 14 degrees (sample implementation).
func getWeather(latitude float32, longitude float32) string {
	_ = fmt.Sprintf("latitude: %f, longitude: %f", latitude, longitude)
	return "14℃"
}

func main() {
	// Create an OpenAI client.
	// base_url points to the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Define the user message.
	// The user is asking about today's weather in Paris.
	messages := []openai.ChatCompletionMessageParamUnion{
		openai.UserMessage("What is the weather like in Paris today?"),
	}

	// Generate a chat completion using the AIOS model.
	// The model parameter specifies the model ID to use.
	// The messages parameter is a list of messages containing the user message.
	// The tools parameter provides metadata about the tools available to the model.
	response, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
		Model:    model,
		Messages: messages,
		Tools: []openai.ChatCompletionToolParam{
			{
				Function: openai.FunctionDefinitionParam{
					Name:        "get_weather",
					Description: openai.String("Get current temperature for provided coordinates in celsius."),
					Parameters: openai.FunctionParameters{
						"type": "object",
						"properties": map[string]interface{}{
							"latitude": map[string]string{
								"type": "number",
							},
							"longitude": map[string]string{
								"type": "number",
							},
						},
						"required":             []string{"latitude", "longitude"},
						"additionalProperties": false,
					},
					Strict: openai.Bool(true),
				},
			},
		},
	})

	if err != nil {
		panic(err)
	}

	// Print the response generated by the AI model.
	// This response includes tool call information.
	fmt.Println([]string{response.Choices[0].Message.ToolCalls[0].RawJSON()})

	// Extract tool call information from the first response.
	// This retrieves the tool call information requested by the model.
	var v map[string]float32
	toolCall := response.Choices[0].Message.ToolCalls[0]
	args := toolCall.Function.Arguments

	// Parse the tool call arguments from JSON string format to map format.
	// This extracts the parameters needed for the tool call.
	err = json.Unmarshal([]byte(args), &v)
	if err != nil {
		panic(err)
	}

	// Call the actual function to get the result. (e.g., "14℃")
	// At this step, the actual weather information lookup logic is executed.
	result := getWeather(v["latitude"], v["longitude"])

	// Add the function call result as a **tool** message to the conversation context and call the model again,
	// then the model generates an appropriate response using the function call result.
	// Add the model's tool call message to messages to maintain the conversation context.
	messages = append(messages, response.Choices[0].Message.ToParam())

	// Add the result of calling the actual function to messages.
	// This allows the model to generate a final response based on the tool call result.
	messages = append(messages, openai.ToolMessage(string(result), toolCall.ID))

	// Generate a second chat completion.
	// This includes the model ID to use and the updated messages list.
	// This request generates a final response based on the tool call result.
	response2, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
		Model:    model,
		Messages: messages,
	})

	if err != nil {
		panic(err)
	}

	// Print the message generated by the AI in the second response.
	// This is the final answer to the user's question.
	fmt.Println(response2.Choices[0].Message.RawJSON())
}
Code block. tool call request

Response

In the first response, you can check the execution method of the tool that the model determined to use in message.tool_calls of choices.

In function of tool_calls, you can check that the get_weather function is used and what arguments are passed to execute it.

[
  {
    'id': 'chatcmpl-tool-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'type': 'function',
    'function': {
      'name': 'get_weather',
      'arguments': '{"latitude": 48.8566, "longitude": 2.3522}'
    }
  }
]

The second request included three messages in the messages:

  • The initial user message
  • The tool calling message generated by the first model
  • The tool message containing the result of executing the get_weather tool

In the second response, the model generates a final response using all the content of the above messages.

{
  'content': 'The current weather in Paris is 14℃.', 
  'refusal': None, 
  'role': 'assistant', 
  'annotations': None, 
  'audio': None, 
  'function_call': None, 
  'tool_calls': [], 
  'reasoning_content': 'We have user asking weather in Paris today. We called '
                      'get_weather function with coordinates and got "14℃" as '
                      'comment. We need to respond. Should incorporate info '
                      'and maybe note we are using approximate. Provide '
                      'answer.',
}

reasoning

Request

For models that support reasoning, you can check the reasoning value as follows.

Warning
Reasoning support models generate many tokens during the inference process, so the answer generation time may take significantly longer.
Color mode
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# In this example, the user is asked to compare which of two numbers is greater.
# "Think step by step" is a prompt that encourages the model to think through logical steps.
data = {
  "model": model,
  "messages": [
    {"role": "user", "content": "Think step by step. 9.11 and 9.8, which is greater?"}
  ]
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
# This request instructs the model to process the user's question.
response = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data)
body = json.loads(response.text)
# Print the response generated by the AI model.
print(body["choices"][0]["message"])
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# In this example, the user is asked to compare which of two numbers is greater.
# "Think step by step" is a prompt that encourages the model to think through logical steps.
data = {
  "model": model,
  "messages": [
    {"role": "user", "content": "Think step by step. 9.11 and 9.8, which is greater?"}
  ]
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
# This request instructs the model to process the user's question.
response = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data)
body = json.loads(response.text)
# Print the response generated by the AI model.
print(body["choices"][0]["message"])
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Generate a chat completion using the AIOS model.
# The model parameter specifies the model ID to use.
# The messages parameter is a list of messages containing the user message.
# "Think step by step" is a prompt that encourages the model to think through logical steps.
response = client.chat.completions.create(
  model=model,
  messages=[
    {"role": "user", "content": "Think step by step. 9.11 and 9.8, which is greater?"}
  ],
)

# Print the response generated by the AI model.
print(response.choices[0].message.model_dump())
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Generate a chat completion using the AIOS model.
# The model parameter specifies the model ID to use.
# The messages parameter is a list of messages containing the user message.
# "Think step by step" is a prompt that encourages the model to think through logical steps.
response = client.chat.completions.create(
  model=model,
  messages=[
    {"role": "user", "content": "Think step by step. 9.11 and 9.8, which is greater?"}
  ],
)

# Print the response generated by the AI model.
print(response.choices[0].message.model_dump())
from langchain_openai import ChatOpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# The model parameter specifies the model ID to use.
chat_llm = ChatOpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Configure the list of chat messages.
# The user is asking to compare which of two numbers is greater.
# "Think step by step" is a prompt that encourages the model to think through logical steps.
messages = [
    ("human", "Think step by step. 9.11 and 9.8, which is greater?"),
]

# Pass the list of messages to the chat LLM to get a response.
# The invoke method returns the model's output.
# This request instructs the model to process the user's question.
chat_completion = chat_llm.invoke(messages)

# Print the response generated by the AI model.
print(chat_completion.model_dump())
from langchain_openai import ChatOpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# The model parameter specifies the model ID to use.
chat_llm = ChatOpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Configure the list of chat messages.
# The user is asking to compare which of two numbers is greater.
# "Think step by step" is a prompt that encourages the model to think through logical steps.
messages = [
    ("human", "Think step by step. 9.11 and 9.8, which is greater?"),
]

# Pass the list of messages to the chat LLM to get a response.
# The invoke method returns the model's output.
# This request instructs the model to process the user's question.
chat_completion = chat_llm.invoke(messages)

# Print the response generated by the AI model.
print(chat_completion.model_dump())
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// In this example, the user is asked to compare which of two numbers is greater.
// "Think step by step" is a prompt that encourages the model to think through logical steps.
const data = {
  model: model,
  messages: [
    {
      role: "user",
      content: "Think step by step. 9.11 and 9.8, which is greater?",
    },
  ],
};

// Generate the AIOS API's v1/chat/completions endpoint URL.
let url = new URL("/v1/chat/completions", aios_base_url);
// Send a POST request to the AIOS API.
// This request instructs the model to process the user's question.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});
const body = await response.json();
// Print the response generated by the AI model.
console.log(body.choices[0].message);
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// In this example, the user is asked to compare which of two numbers is greater.
// "Think step by step" is a prompt that encourages the model to think through logical steps.
const data = {
  model: model,
  messages: [
    {
      role: "user",
      content: "Think step by step. 9.11 and 9.8, which is greater?",
    },
  ],
};

// Generate the AIOS API's v1/chat/completions endpoint URL.
let url = new URL("/v1/chat/completions", aios_base_url);
// Send a POST request to the AIOS API.
// This request instructs the model to process the user's question.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});
const body = await response.json();
// Print the response generated by the AI model.
console.log(body.choices[0].message);
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a chat completion using the AIOS model.
// The model parameter specifies the model ID to use.
// The messages parameter is a list of messages containing the user message.
// "Think step by step" is a prompt that encourages the model to think through logical steps.
const response = await client.chat.completions.create({
  model: model,
  messages: [
    {
        role: "user",
        content: "Think step by step. 9.11 and 9.8, which is greater?",
      },
  ],
});

// Print the response generated by the AI model.
console.log(response.choices[0].message);
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Generate a chat completion using the AIOS model.
// The model parameter specifies the model ID to use.
// The messages parameter is a list of messages containing the user message.
// "Think step by step" is a prompt that encourages the model to think through logical steps.
const response = await client.chat.completions.create({
  model: model,
  messages: [
    {
        role: "user",
        content: "Think step by step. 9.11 and 9.8, which is greater?",
      },
  ],
});

// Print the response generated by the AI model.
console.log(response.choices[0].message);
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the Message structure.
// Role: Message role (user, assistant, etc.)
// Content: Message content
type Message struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

// Define the POST request data structure.
// Model: Model ID to use
// Messages: List of messages
// Stream: Whether to stream
type PostData struct {
	Model    string    `json:"model"`
	Messages []Message `json:"messages"`
	Stream   bool      `json:"stream,omitempty"`
}

func main() {
	// Configure the request data.
	// In this example, the user is asked to compare which of two numbers is greater.
	// "Think step by step" is a prompt that encourages the model to think through logical steps.
	data := PostData{
		Model: model,
		Messages: []Message{
			{
				Role:    "user",
				Content: "Think step by step. 9.11 and 9.8, which is greater?",
			},
		},
	}
	
	// Serialize the request data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/chat/completions endpoint.
	response, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Parse the response body to JSON format.
	// This converts the model's response received from the server into structured data.
	var v map[string]interface{}
	json.Unmarshal(body, &v)
	choices := v["choices"].([]interface{})
	choice := choices[0].(map[string]interface{})
	message, err := json.MarshalIndent(choice["message"], "", "  ")
	if err != nil {
		panic(err)
	}
	// Print the response generated by the AI model.
	fmt.Println(string(message))
}
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the Message structure.
// Role: Message role (user, assistant, etc.)
// Content: Message content
type Message struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

// Define the POST request data structure.
// Model: Model ID to use
// Messages: List of messages
// Stream: Whether to stream
type PostData struct {
	Model    string    `json:"model"`
	Messages []Message `json:"messages"`
	Stream   bool      `json:"stream,omitempty"`
}

func main() {
	// Configure the request data.
	// In this example, the user is asked to compare which of two numbers is greater.
	// "Think step by step" is a prompt that encourages the model to think through logical steps.
	data := PostData{
		Model: model,
		Messages: []Message{
			{
				Role:    "user",
				Content: "Think step by step. 9.11 and 9.8, which is greater?",
			},
		},
	}
	
	// Serialize the request data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/chat/completions endpoint.
	response, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Parse the response body to JSON format.
	// This converts the model's response received from the server into structured data.
	var v map[string]interface{}
	json.Unmarshal(body, &v)
	choices := v["choices"].([]interface{})
	choice := choices[0].(map[string]interface{})
	message, err := json.MarshalIndent(choice["message"], "", "  ")
	if err != nil {
		panic(err)
	}
	// Print the response generated by the AI model.
	fmt.Println(string(message))
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// base_url points to the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate a chat completion using the AIOS model.
	// The model parameter specifies the model ID to use.
	// The messages parameter is a list of messages containing the user message.
	// "Think step by step" is a prompt that encourages the model to think through logical steps.
	response, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
		Model: model,
		Messages: []openai.ChatCompletionMessageParamUnion{
			openai.UserMessage("Think step by step. 9.11 and 9.8, which is greater?"),
		},
	})

	if err != nil {
		panic(err)
	}

	// Print the response generated by the AI model.
	fmt.Println(response.Choices[0].Message.RawJSON())
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// base_url points to the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate a chat completion using the AIOS model.
	// The model parameter specifies the model ID to use.
	// The messages parameter is a list of messages containing the user message.
	// "Think step by step" is a prompt that encourages the model to think through logical steps.
	response, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
		Model: model,
		Messages: []openai.ChatCompletionMessageParamUnion{
			openai.UserMessage("Think step by step. 9.11 and 9.8, which is greater?"),
		},
	})

	if err != nil {
		panic(err)
	}

	// Print the response generated by the AI model.
	fmt.Println(response.Choices[0].Message.RawJSON())
}
Code block. reasoning request

Response

If you check the message field of choices, you can see reasoning_content in addition to content.

reasoning_content refers to the tokens generated during the reasoning phase before generating the final answer.

{
  'annotations': None,
  'audio': None,
  'content': 'Sure! Let’s compare the two numbers step by step.\n'
              '\n'
              '1. **Identify the numbers**  \n'
              '   - First number: **9.11**  \n'
              '   - Second number: **9.8**\n'
              '\n'
              '2. **Look at the whole-number part**  \n'
              '   Both numbers have the same whole-number part, **9**. So the '
              'comparison will depend on the decimal part.\n'
              '\n'
              '3. **Compare the decimal parts**  \n'
              '   - Decimal part of 9.11 = **0.11**  \n'
              '   - Decimal part of 9.8  = **0.80** (since 9.8 = 9.80)\n'
              '\n'
              '4. **Determine which decimal part is larger**  \n'
              '   - 0.80 is greater than 0.11.\n'
              '\n'
              '5. **Conclude**  \n'
              '   Because the whole-number parts are equal and the decimal part '
              'of 9.8 is larger, **9.8 is greater than 9.11**.',
  'function_call': None,
  'reasoning_content': 'User asks: "Think step by step. 9.11 and 9.8, which is '
                        'greater?" We need to compare numbers 9.11 and 9.8. '
                        'Value: 9.11 < 9.8, so 9.8 is greater. Provide '
                        'step-by-step reasoning. No policy conflict.',
  'refusal': None,
  'role': 'assistant',
  'tool_calls': []
}

image to text

For models that support vision, you can input images as follows.

dog image
Fig. Input image
Warning

Input images for vision support models have size and quantity limits.

For information about image input limits, please refer to Provided Models.

Request

You can input images in base64-encoded data URL format with MIME type.

Color mode
import base64
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

image_path = "image/path.jpg"

# Define a function to Base64 encode an image.
# This converts the image to text format so it can be transmitted to the API.
def encode_image(image_path: str):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode("utf-8")

# Encode the image in Base64 format.
base64_image = encode_image(image_path)

# Configure the request data.
# In this example, the user is asked to ask a question about the image.
# The image is transmitted as a Base64-encoded string.
data = {
  "model": model,
  "messages": [
    {
      "role": "user", 
      "content": [
        {"type": "text", "text": "what's in this image?"},
        {
          "type": "image_url", 
          "image_url": {
            "url": f"data:image/jpeg;base64,{base64_image}",
          },
        },
      ]
    },
  ]
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
# This request asks the model to analyze the image.
response = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data)
body = json.loads(response.text)
# Print the response generated by the AI model.
# This response is the model's description of the image content.
print(body["choices"][0]["message"])
import base64
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

image_path = "image/path.jpg"

# Define a function to Base64 encode an image.
# This converts the image to text format so it can be transmitted to the API.
def encode_image(image_path: str):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode("utf-8")

# Encode the image in Base64 format.
base64_image = encode_image(image_path)

# Configure the request data.
# In this example, the user is asked to ask a question about the image.
# The image is transmitted as a Base64-encoded string.
data = {
  "model": model,
  "messages": [
    {
      "role": "user", 
      "content": [
        {"type": "text", "text": "what's in this image?"},
        {
          "type": "image_url", 
          "image_url": {
            "url": f"data:image/jpeg;base64,{base64_image}",
          },
        },
      ]
    },
  ]
}

# Send a POST request to the AIOS API's v1/chat/completions endpoint.
# This request asks the model to analyze the image.
response = requests.post(urljoin(aios_base_url, "v1/chat/completions"), json=data)
body = json.loads(response.text)
# Print the response generated by the AI model.
# This response is the model's description of the image content.
print(body["choices"][0]["message"])
import base64
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

image_path = "image/path.jpg"

# Define a function to Base64 encode an image.
# This converts the image to text format so it can be transmitted to the API.
def encode_image(image_path: str):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode("utf-8")

# Encode the image in Base64 format.
base64_image = encode_image(image_path)

# Generate a chat completion using the AIOS model.
# The model parameter specifies the model ID to use.
# The messages parameter is a list of messages containing the user message.
# In this example, the user is asked to ask a question about the image.
# The image is transmitted as a Base64-encoded string.
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/jpeg;base64,{base64_image}",
          },
        },
      ]
    },
  ],
)

# Print the response generated by the AI model.
# This response is the model's description of the image content.
print(response.choices[0].message.model_dump())
import base64
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

image_path = "image/path.jpg"

# Define a function to Base64 encode an image.
# This converts the image to text format so it can be transmitted to the API.
def encode_image(image_path: str):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode("utf-8")

# Encode the image in Base64 format.
base64_image = encode_image(image_path)

# Generate a chat completion using the AIOS model.
# The model parameter specifies the model ID to use.
# The messages parameter is a list of messages containing the user message.
# In this example, the user is asked to ask a question about the image.
# The image is transmitted as a Base64-encoded string.
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/jpeg;base64,{base64_image}",
          },
        },
      ]
    },
  ],
)

# Print the response generated by the AI model.
# This response is the model's description of the image content.
print(response.choices[0].message.model_dump())
import base64
from langchain_openai import ChatOpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# The model parameter specifies the model ID to use.
chat_llm = ChatOpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

image_path = "image/path.jpg"

# Define a function to Base64 encode an image.
# This converts the image to text format so it can be transmitted to the API.
def encode_image(image_path: str):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode("utf-8")

# Encode the image in Base64 format.
base64_image = encode_image(image_path)

# Configure the list of chat messages.
# In this example, the user is asked to ask a question about the image.
# The image is transmitted as a Base64-encoded string.
messages = [
  {
    "role": "user", 
    "content": [
      {"type": "text", "text": "what's in this image?"},
      {
        "type": "image_url", 
        "image_url": {
          "url": f"data:image/jpeg;base64,{base64_image}",
        },
      },
    ]
  },
]

# Pass the list of messages to the chat LLM to get a response.
# The invoke method returns the model's output.
# This request asks the model to analyze the image.
chat_completion = chat_llm.invoke(messages)

# Print the response generated by the AI model.
# This response is the model's description of the image content.
print(chat_completion.model_dump())
import base64
from langchain_openai import ChatOpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
# base_url points to the v1 endpoint of the AIOS API,
# and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# The model parameter specifies the model ID to use.
chat_llm = ChatOpenAI(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

image_path = "image/path.jpg"

# Define a function to Base64 encode an image.
# This converts the image to text format so it can be transmitted to the API.
def encode_image(image_path: str):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode("utf-8")

# Encode the image in Base64 format.
base64_image = encode_image(image_path)

# Configure the list of chat messages.
# In this example, the user is asked to ask a question about the image.
# The image is transmitted as a Base64-encoded string.
messages = [
  {
    "role": "user", 
    "content": [
      {"type": "text", "text": "what's in this image?"},
      {
        "type": "image_url", 
        "image_url": {
          "url": f"data:image/jpeg;base64,{base64_image}",
        },
      },
    ]
  },
]

# Pass the list of messages to the chat LLM to get a response.
# The invoke method returns the model's output.
# This request asks the model to analyze the image.
chat_completion = chat_llm.invoke(messages)

# Print the response generated by the AI model.
# This response is the model's description of the image content.
print(chat_completion.model_dump())
import { readFile } from "fs/promises";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

const imagePath = "image/path.jpg";

// Define a function to convert an image file to Base64.
// This converts the image to text format so it can be transmitted to the API.
async function imageFileToBase64(imagePath) {
  // Read file contents as buffer
  const fileBuffer = await readFile(imagePath);

  // Convert buffer to Base64 string
  return fileBuffer.toString("base64");
}

// Convert the image file to Base64 format.
const base64Image = await imageFileToBase64(imagePath);

// Configure the request data.
// In this example, the user is asked to ask a question about the image.
// The image is transmitted as a Base64-encoded string.
const data = {
  model: model,
  messages: [
    {
      role: "user",
      content: [
        { type: "text", text: "what's in this image?" },
        {
          type: "image_url",
          image_url: {
            url: `data:image/jpeg;base64,${base64Image}`,
          },
        },
      ],
    },
  ],
};

// Generate the AIOS API's v1/chat/completions endpoint URL.
let url = new URL("/v1/chat/completions", aios_base_url);

// Send a POST request to the AIOS API.
// This request asks the model to analyze the image.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});
const body = await response.json();
// Print the response generated by the AI model.
// This response is the model's description of the image content.
console.log(body.choices[0].message);
import { readFile } from "fs/promises";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

const imagePath = "image/path.jpg";

// Define a function to convert an image file to Base64.
// This converts the image to text format so it can be transmitted to the API.
async function imageFileToBase64(imagePath) {
  // Read file contents as buffer
  const fileBuffer = await readFile(imagePath);

  // Convert buffer to Base64 string
  return fileBuffer.toString("base64");
}

// Convert the image file to Base64 format.
const base64Image = await imageFileToBase64(imagePath);

// Configure the request data.
// In this example, the user is asked to ask a question about the image.
// The image is transmitted as a Base64-encoded string.
const data = {
  model: model,
  messages: [
    {
      role: "user",
      content: [
        { type: "text", text: "what's in this image?" },
        {
          type: "image_url",
          image_url: {
            url: `data:image/jpeg;base64,${base64Image}`,
          },
        },
      ],
    },
  ],
};

// Generate the AIOS API's v1/chat/completions endpoint URL.
let url = new URL("/v1/chat/completions", aios_base_url);

// Send a POST request to the AIOS API.
// This request asks the model to analyze the image.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});
const body = await response.json();
// Print the response generated by the AI model.
// This response is the model's description of the image content.
console.log(body.choices[0].message);
import OpenAI from "openai";
import { readFile } from "fs/promises";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

const imagePath = "image/path.jpg";

// Define a function to convert an image file to Base64.
// This converts the image to text format so it can be transmitted to the API.
async function imageFileToBase64(imagePath) {
  // Read file contents as buffer
  const fileBuffer = await readFile(imagePath);

  // Convert buffer to Base64 string
  return fileBuffer.toString("base64");
}

// Convert the image file to Base64 format.
const base64Image = await imageFileToBase64(imagePath);

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});


// Generate a chat completion using the AIOS model.
// The model parameter specifies the model ID to use.
// The messages parameter is a list of messages containing the user message.
// In this example, the user is asked to ask a question about the image.
// The image is transmitted as a Base64-encoded string.
const response = await client.chat.completions.create({
  model: model,
  messages: [
    {
      role: "user",
      content: [
        { type: "text", text: "what's in this image?" },
        {
          type: "image_url",
          image_url: {
            url: `data:image/jpeg;base64,${base64Image}`,
          },
        },
      ],
    },
  ],
});

// Print the response generated by the AI model.
// This response is the model's description of the image content.
console.log(response.choices[0].message);
import OpenAI from "openai";
import { readFile } from "fs/promises";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

const imagePath = "image/path.jpg";

// Define a function to convert an image file to Base64.
// This converts the image to text format so it can be transmitted to the API.
async function imageFileToBase64(imagePath) {
  // Read file contents as buffer
  const fileBuffer = await readFile(imagePath);

  // Convert buffer to Base64 string
  return fileBuffer.toString("base64");
}

// Convert the image file to Base64 format.
const base64Image = await imageFileToBase64(imagePath);

// Create an OpenAI client.
// apiKey is the key required by AIOS, typically set to "EMPTY_KEY".
// baseURL points to the v1 endpoint of the AIOS API.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});


// Generate a chat completion using the AIOS model.
// The model parameter specifies the model ID to use.
// The messages parameter is a list of messages containing the user message.
// In this example, the user is asked to ask a question about the image.
// The image is transmitted as a Base64-encoded string.
const response = await client.chat.completions.create({
  model: model,
  messages: [
    {
      role: "user",
      content: [
        { type: "text", text: "what's in this image?" },
        {
          type: "image_url",
          image_url: {
            url: `data:image/jpeg;base64,${base64Image}`,
          },
        },
      ],
    },
  ],
});

// Print the response generated by the AI model.
// This response is the model's description of the image content.
console.log(response.choices[0].message);
import { HumanMessage } from "@langchain/core/messages";
import { ChatOpenAI } from "@langchain/openai";
import { readFile } from "fs/promises";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

const imagePath = "image/path.jpg";

// Define a function to convert an image file to Base64.
// This converts the image to text format so it can be transmitted to the API.
async function imageFileToBase64(imagePath) {
  // Read file contents as buffer
  const fileBuffer = await readFile(imagePath);

  // Convert buffer to Base64 string
  return fileBuffer.toString("base64");
}

// Convert the image file to Base64 format.
const base64Image = await imageFileToBase64(imagePath);

// Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
// base_url points to the v1 endpoint of the AIOS API,
// and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
// The model parameter specifies the model ID to use.
const llm = new ChatOpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Configure the list of chat messages.
// In this example, the user is asked to ask a question about the image.
// The image is transmitted as a Base64-encoded string.
const messages = [
  new HumanMessage({
    content: [
      { type: "text", text: "what's in this image?" },
      {
        type: "image_url",
        image_url: {
          url: `data:image/jpeg;base64,${base64Image}`,
        },
      },
    ],
  }),
];

// Pass the list of messages to the chat LLM to get a response.
// The invoke method returns the model's output.
// This request asks the model to analyze the image.
const response = await llm.invoke(messages);

// Print the response generated by the AI model.
// This response is the model's description of the image content.
console.log(response.content);
import { HumanMessage } from "@langchain/core/messages";
import { ChatOpenAI } from "@langchain/openai";
import { readFile } from "fs/promises";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

const imagePath = "image/path.jpg";

// Define a function to convert an image file to Base64.
// This converts the image to text format so it can be transmitted to the API.
async function imageFileToBase64(imagePath) {
  // Read file contents as buffer
  const fileBuffer = await readFile(imagePath);

  // Convert buffer to Base64 string
  return fileBuffer.toString("base64");
}

// Convert the image file to Base64 format.
const base64Image = await imageFileToBase64(imagePath);

// Create a chat LLM (Large Language Model) instance using LangChain's ChatOpenAI class.
// base_url points to the v1 endpoint of the AIOS API,
// and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
// The model parameter specifies the model ID to use.
const llm = new ChatOpenAI({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Configure the list of chat messages.
// In this example, the user is asked to ask a question about the image.
// The image is transmitted as a Base64-encoded string.
const messages = [
  new HumanMessage({
    content: [
      { type: "text", text: "what's in this image?" },
      {
        type: "image_url",
        image_url: {
          url: `data:image/jpeg;base64,${base64Image}`,
        },
      },
    ],
  }),
];

// Pass the list of messages to the chat LLM to get a response.
// The invoke method returns the model's output.
// This request asks the model to analyze the image.
const response = await llm.invoke(messages);

// Print the response generated by the AI model.
// This response is the model's description of the image content.
console.log(response.content);
package main

import (
	"bytes"
	"encoding/base64"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

var imagePath = "image/path.jpg"

// Define the Message structure.
// Role: Message role (user, assistant, etc.)
// Content: Message content (including text and image URL)
type Message struct {
	Role    string                   `json:"role"`
	Content []map[string]interface{} `json:"content"`
}

// Define the POST request data structure.
// Model: Model ID to use
// Messages: List of messages
// Stream: Whether to stream
type PostData struct {
	Model    string    `json:"model"`
	Messages []Message `json:"messages"`
	Stream   bool      `json:"stream,omitempty"`
}

// Define a function to Base64 encode an image file.
// This converts the image to text format so it can be transmitted to the API.
func imageFileToBase64(imagePath string) (string, error) {
	data, err := os.ReadFile(imagePath)
	if err != nil {
		return "", err
	}
	return base64.StdEncoding.EncodeToString([]byte(data)), nil
}

func main() {
	// Encode the image file in Base64 format.
	base64Image, err := imageFileToBase64(imagePath)
	if err != nil {
		panic(err)
	}

	// Configure the request data.
	// In this example, the user is asked to ask a question about the image.
	// The image is transmitted as a Base64-encoded string.
	data := PostData{
		Model: model,
		Messages: []Message{
			{
				Role: "user",
				Content: []map[string]interface{}{
					{
						"type": "text",
						"text": "what's in this image?",
					},
					{
						"type": "image_url",
						"image_url": map[string]string{
							"url": fmt.Sprintf("data:image/jpeg;base64,%s", base64Image),
						},
					},
				},
			},
		},
	}
	// Serialize the request data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/chat/completions endpoint.
	// This request asks the model to analyze the image.
	response, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Parse the response body to JSON format.
	// This converts the model's response received from the server into structured data.
	var v map[string]interface{}
	json.Unmarshal(body, &v)
	// Print the response generated by the AI model.
	// This response is the model's description of the image content.
	choices := v["choices"].([]interface{})
	choice := choices[0].(map[string]interface{})
	message, err := json.MarshalIndent(choice["message"], "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(message))
}
package main

import (
	"bytes"
	"encoding/base64"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

var imagePath = "image/path.jpg"

// Define the Message structure.
// Role: Message role (user, assistant, etc.)
// Content: Message content (including text and image URL)
type Message struct {
	Role    string                   `json:"role"`
	Content []map[string]interface{} `json:"content"`
}

// Define the POST request data structure.
// Model: Model ID to use
// Messages: List of messages
// Stream: Whether to stream
type PostData struct {
	Model    string    `json:"model"`
	Messages []Message `json:"messages"`
	Stream   bool      `json:"stream,omitempty"`
}

// Define a function to Base64 encode an image file.
// This converts the image to text format so it can be transmitted to the API.
func imageFileToBase64(imagePath string) (string, error) {
	data, err := os.ReadFile(imagePath)
	if err != nil {
		return "", err
	}
	return base64.StdEncoding.EncodeToString([]byte(data)), nil
}

func main() {
	// Encode the image file in Base64 format.
	base64Image, err := imageFileToBase64(imagePath)
	if err != nil {
		panic(err)
	}

	// Configure the request data.
	// In this example, the user is asked to ask a question about the image.
	// The image is transmitted as a Base64-encoded string.
	data := PostData{
		Model: model,
		Messages: []Message{
			{
				Role: "user",
				Content: []map[string]interface{}{
					{
						"type": "text",
						"text": "what's in this image?",
					},
					{
						"type": "image_url",
						"image_url": map[string]string{
							"url": fmt.Sprintf("data:image/jpeg;base64,%s", base64Image),
						},
					},
				},
			},
		},
	}
	// Serialize the request data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/chat/completions endpoint.
	// This request asks the model to analyze the image.
	response, err := http.Post(aiosBaseUrl+"/v1/chat/completions", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Parse the response body to JSON format.
	// This converts the model's response received from the server into structured data.
	var v map[string]interface{}
	json.Unmarshal(body, &v)
	// Print the response generated by the AI model.
	// This response is the model's description of the image content.
	choices := v["choices"].([]interface{})
	choice := choices[0].(map[string]interface{})
	message, err := json.MarshalIndent(choice["message"], "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(message))
}
package main

import (
	"context"
	"encoding/base64"
	"fmt"
	"os"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

var imagePath = "image/path.jpg"

// Define a function to Base64 encode an image file.
// This converts the image to text format so it can be transmitted to the API.
func imageFileToBase64(imagePath string) (string, error) {
	data, err := os.ReadFile(imagePath)
	if err != nil {
		return "", err
	}
	return base64.StdEncoding.EncodeToString([]byte(data)), nil
}

func main() {
	// Encode the image file in Base64 format.
	base64Image, err := imageFileToBase64(imagePath)
	if err != nil {
		panic(err)
	}

	// Create an OpenAI client.
	// base_url points to the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate a chat completion using the AIOS model.
	// The model parameter specifies the model ID to use.
	// The messages parameter is a list of messages containing the user message.
	// In this example, the user is asked to ask a question about the image.
	// The image is transmitted as a Base64-encoded string.
	response, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
		Model: model,
		Messages: []openai.ChatCompletionMessageParamUnion{
			openai.UserMessage([]openai.ChatCompletionContentPartUnionParam{
				{
					OfText: &openai.ChatCompletionContentPartTextParam{
						Text: "what's in this image?",
					},
				},
				{
					OfImageURL: &openai.ChatCompletionContentPartImageParam{
						ImageURL: openai.ChatCompletionContentPartImageImageURLParam{
							URL: fmt.Sprintf("data:image/jpeg;base64,%s", base64Image),
						},
					},
				},
			}),
		},
	})

	if err != nil {
		panic(err)
	}

	// Print the response generated by the AI model.
	// This response is the model's description of the image content.
	fmt.Println(response.Choices[0].Message.RawJSON())
}
package main

import (
	"context"
	"encoding/base64"
	"fmt"
	"os"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

var imagePath = "image/path.jpg"

// Define a function to Base64 encode an image file.
// This converts the image to text format so it can be transmitted to the API.
func imageFileToBase64(imagePath string) (string, error) {
	data, err := os.ReadFile(imagePath)
	if err != nil {
		return "", err
	}
	return base64.StdEncoding.EncodeToString([]byte(data)), nil
}

func main() {
	// Encode the image file in Base64 format.
	base64Image, err := imageFileToBase64(imagePath)
	if err != nil {
		panic(err)
	}

	// Create an OpenAI client.
	// base_url points to the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate a chat completion using the AIOS model.
	// The model parameter specifies the model ID to use.
	// The messages parameter is a list of messages containing the user message.
	// In this example, the user is asked to ask a question about the image.
	// The image is transmitted as a Base64-encoded string.
	response, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
		Model: model,
		Messages: []openai.ChatCompletionMessageParamUnion{
			openai.UserMessage([]openai.ChatCompletionContentPartUnionParam{
				{
					OfText: &openai.ChatCompletionContentPartTextParam{
						Text: "what's in this image?",
					},
				},
				{
					OfImageURL: &openai.ChatCompletionContentPartImageParam{
						ImageURL: openai.ChatCompletionContentPartImageImageURLParam{
							URL: fmt.Sprintf("data:image/jpeg;base64,%s", base64Image),
						},
					},
				},
			}),
		},
	})

	if err != nil {
		panic(err)
	}

	// Print the response generated by the AI model.
	// This response is the model's description of the image content.
	fmt.Println(response.Choices[0].Message.RawJSON())
}
Code block. vision request

Response

The image is analyzed and text is generated as follows:

{
  'annotations': None,
  'audio': None,
  'content': "Here's what's in the image:\n"
              '\n'
              '*   **A Golden Retriever puppy:** The main focus is a cute, '
              'fluffy golden retriever puppy lying on a patch of grass.\n'
              '*   **A bone:** The puppy is chewing on a pink bone.\n'
              '*   **Green grass:** The puppy is lying on a vibrant green lawn.\n'
              '*   **Background:** There’s a bit of foliage and some elements of '
              'a garden or yard in the background, including a small shed and '
              'some plants.\n'
              '\n'
              "It's a really heartwarming image!",
  'function_call': None,
  'reasoning_content': None,
  'refusal': None,
  'role': 'assistant',
  'tool_calls': []
}

Embeddings API

Embeddings converts input text into high-dimensional vectors of a specified dimension.

The generated vectors can be used for various natural language processing tasks such as text similarity, clustering, and search.

Request

Color mode
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the data to pass to the model.
data = {
  "model": model,
  "input": "What is the capital of France?"
}

# Send a POST request to AIOS's /v1/embeddings API endpoint.
response = requests.post(urljoin(aios_base_url, "v1/embeddings"), json=data)
body = json.loads(response.text)
# Print the generated embedding vector from the response.
print(body["data"][0]["embedding"])
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the data to pass to the model.
data = {
  "model": model,
  "input": "What is the capital of France?"
}

# Send a POST request to AIOS's /v1/embeddings API endpoint.
response = requests.post(urljoin(aios_base_url, "v1/embeddings"), json=data)
body = json.loads(response.text)
# Print the generated embedding vector from the response.
print(body["data"][0]["embedding"])
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url specifies the AIOS API endpoint,
# and api_key is set to a dummy value ("EMPTY_KEY").
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Call the OpenAI client's embeddings.create method to generate an embedding.
# Pass the input text and model ID to generate an embedding vector.
response = client.embeddings.create(
    input="What is the capital of France?",
    model=model
)

# Print the generated embedding vector.
print(response.data[0].embedding)
from openai import OpenAI
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an OpenAI client.
# base_url specifies the AIOS API endpoint,
# and api_key is set to a dummy value ("EMPTY_KEY").
client = OpenAI(base_url=urljoin(aios_base_url, "v1"), api_key="EMPTY_KEY")

# Call the OpenAI client's embeddings.create method to generate an embedding.
# Pass the input text and model ID to generate an embedding vector.
response = client.embeddings.create(
    input="What is the capital of France?",
    model=model
)

# Print the generated embedding vector.
print(response.data[0].embedding)
from langchain_together import TogetherEmbeddings
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an embedding instance using the TogetherEmbeddings class.
# base_url specifies the AIOS API endpoint,
# api_key is set to a dummy value ("EMPTY_KEY").
# model specifies the embedding model to use.
embeddings = TogetherEmbeddings(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Generate an embedding vector for the input text.
# The embed_query method generates an embedding for a single sentence.
embedding = embeddings.embed_query("What is the capital of France?")
# Print the generated embedding vector.
print(embedding)
from langchain_together import TogetherEmbeddings
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create an embedding instance using the TogetherEmbeddings class.
# base_url specifies the AIOS API endpoint,
# api_key is set to a dummy value ("EMPTY_KEY").
# model specifies the embedding model to use.
embeddings = TogetherEmbeddings(
  base_url=urljoin(aios_base_url, "v1"), 
  api_key="EMPTY_KEY", 
  model=model
)

# Generate an embedding vector for the input text.
# The embed_query method generates an embedding for a single sentence.
embedding = embeddings.embed_query("What is the capital of France?")
# Print the generated embedding vector.
print(embedding)
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Configure the data to pass to the model.
const data = {
  model: model,
  input: "What is the capital of France?"
};

// Generate the AIOS API's v1/embeddings endpoint URL.
let url = new URL("/v1/embeddings", aios_base_url);

// Send a POST request to AIOS's embeddings API endpoint.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});
const body = await response.json();
// Print the generated embedding vector from the response.
console.log(body.data[0].embedding);
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Configure the data to pass to the model.
const data = {
  model: model,
  input: "What is the capital of France?"
};

// Generate the AIOS API's v1/embeddings endpoint URL.
let url = new URL("/v1/embeddings", aios_base_url);

// Send a POST request to AIOS's embeddings API endpoint.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});
const body = await response.json();
// Print the generated embedding vector from the response.
console.log(body.data[0].embedding);
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is set to a dummy value ("EMPTY_KEY"),
// and baseURL specifies the AIOS API endpoint.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Call the OpenAI client's embeddings.create method to generate an embedding.
// Pass the input text and model ID to generate an embedding vector.
const response = await client.embeddings.create({
  model: model,
  input: "What is the capital of France?",
});

// Print the generated embedding vector.
console.log(response.data[0].embedding);
import OpenAI from "openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create an OpenAI client.
// apiKey is set to a dummy value ("EMPTY_KEY"),
// and baseURL specifies the AIOS API endpoint.
const client = new OpenAI({
  apiKey: "EMPTY_KEY",
  baseURL: new URL("v1", aios_base_url).href,
});

// Call the OpenAI client's embeddings.create method to generate an embedding.
// Pass the input text and model ID to generate an embedding vector.
const response = await client.embeddings.create({
  model: model,
  input: "What is the capital of France?",
});

// Print the generated embedding vector.
console.log(response.data[0].embedding);
import { OpenAIEmbeddings } from "@langchain/openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create an embedding instance using LangChain's OpenAIEmbeddings class.
// base_url points to the v1 endpoint of the AIOS API,
// and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
// The model parameter specifies the model ID to use.
const embeddings = new OpenAIEmbeddings({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Generate an embedding vector for the input text.
// The embedQuery method generates an embedding for a single sentence.
const response = await embeddings.embedQuery("What is the capital of France?");

// Print the generated embedding vector.
console.log(response);
import { OpenAIEmbeddings } from "@langchain/openai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create an embedding instance using LangChain's OpenAIEmbeddings class.
// base_url points to the v1 endpoint of the AIOS API,
// and api_key is the key required by AIOS, typically set to "EMPTY_KEY".
// The model parameter specifies the model ID to use.
const embeddings = new OpenAIEmbeddings({
  model: model,
  apiKey: "EMPTY_KEY",
  configuration: {
    baseURL: new URL("v1", aios_base_url).href,
  },
});

// Generate an embedding vector for the input text.
// The embedQuery method generates an embedding for a single sentence.
const response = await embeddings.embedQuery("What is the capital of France?");

// Print the generated embedding vector.
console.log(response);
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the data structure for the POST request.
// Model: Model ID to use
// Input: Input text to generate embedding for
type PostData struct {
	Model string `json:"model"`
	Input string `json:"input"`
}

func main() {
	// Create the request data.
	data := PostData{
		Model: model,
		Input: "What is the capital of France?",
	}

	// Marshal the data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/embeddings endpoint.
	response, err := http.Post(aiosBaseUrl+"/v1/embeddings", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the entire response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Unmarshal the response body to map format.
	var v map[string]interface{}
	json.Unmarshal(body, &v)
	responseData := v["data"].([]interface{})
	firstData := responseData[0].(map[string]interface{})
	// Print the embedding vector of the first data in JSON format.
	embedding, err := json.MarshalIndent(firstData["embedding"], "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(embedding))
}
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the data structure for the POST request.
// Model: Model ID to use
// Input: Input text to generate embedding for
type PostData struct {
	Model string `json:"model"`
	Input string `json:"input"`
}

func main() {
	// Create the request data.
	data := PostData{
		Model: model,
		Input: "What is the capital of France?",
	}

	// Marshal the data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v1/embeddings endpoint.
	response, err := http.Post(aiosBaseUrl+"/v1/embeddings", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the entire response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Unmarshal the response body to map format.
	var v map[string]interface{}
	json.Unmarshal(body, &v)
	responseData := v["data"].([]interface{})
	firstData := responseData[0].(map[string]interface{})
	// Print the embedding vector of the first data in JSON format.
	embedding, err := json.MarshalIndent(firstData["embedding"], "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(embedding))
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// Use option.WithBaseURL to set the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate an embedding using the AIOS model.
	// Use openai.EmbeddingNewParams to set the model and input text.
	// The input text is "What is the capital of France?".
	completion, err := client.Embeddings.New(context.TODO(), openai.EmbeddingNewParams{
		Model: model,
		Input: openai.EmbeddingNewParamsInputUnion{
			OfString: openai.String("What is the capital of France?"),
		},
	})

	if err != nil {
		panic(err)
	}

	// Print the generated embedding vector.
	fmt.Println(completion.Data[0].Embedding)
}
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create an OpenAI client.
	// Use option.WithBaseURL to set the v1 endpoint of the AIOS API.
	client := openai.NewClient(
		option.WithBaseURL(aiosBaseUrl + "/v1"),
	)

	// Generate an embedding using the AIOS model.
	// Use openai.EmbeddingNewParams to set the model and input text.
	// The input text is "What is the capital of France?".
	completion, err := client.Embeddings.New(context.TODO(), openai.EmbeddingNewParams{
		Model: model,
		Input: openai.EmbeddingNewParamsInputUnion{
			OfString: openai.String("What is the capital of France?"),
		},
	})

	if err != nil {
		panic(err)
	}

	// Print the generated embedding vector.
	fmt.Println(completion.Data[0].Embedding)
}
Code block. /v1/embeddings request
Note
The aios endpoint-url and model ID information for calling the model are provided in the LLM Endpoint Usage Guide on the resource detail page. Please refer to Using LLM.

Response

You receive the value converted to vector format in embedding of data.

[
  0.01319122314453125, 
  0.057220458984375, 
  -0.028533935546875, 
  -0.0008697509765625, 
  -0.01422119140625,
  ...omitted...
]

Rerank API

Rerank calculates the relevance to a query for given documents and assigns a ranking.

It helps improve the performance of RAG (Retrieval-Augmented Generation) applications by prioritizing relevant documents.

Request

Color mode
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# This includes the model ID to use, query, list of documents, and top N results.
data = {
  "model": model,
  "query": "What is the capital of France?",
  "documents": [
    "The capital of France is Paris.",
    "France capital city is known for the Eiffel Tower.",
    "Paris is located in the north-central part of France."
  ],
  "top_n": 3
}

# Send a POST request to the AIOS API's v2/rerank endpoint.
# Compare the query and document list to rearrange documents with high relevance.
response = requests.post(urljoin(aios_base_url, "v2/rerank"), json=data)
body = json.loads(response.text)
# Print the rearranged results.
# This result is a list of documents sorted by relevance score between the query and documents.
print(body["results"])
import json
import requests
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Configure the request data.
# This includes the model ID to use, query, list of documents, and top N results.
data = {
  "model": model,
  "query": "What is the capital of France?",
  "documents": [
    "The capital of France is Paris.",
    "France capital city is known for the Eiffel Tower.",
    "Paris is located in the north-central part of France."
  ],
  "top_n": 3
}

# Send a POST request to the AIOS API's v2/rerank endpoint.
# Compare the query and document list to rearrange documents with high relevance.
response = requests.post(urljoin(aios_base_url, "v2/rerank"), json=data)
body = json.loads(response.text)
# Print the rearranged results.
# This result is a list of documents sorted by relevance score between the query and documents.
print(body["results"])
import cohere
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a Cohere client.
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# base_url points to the base path of the AIOS API.
client = cohere.ClientV2("EMPTY_KEY", base_url=aios_base_url)

# Define the list of documents.
# These are the documents to search.
docs = [
  "The capital of France is Paris.",
  "France capital city is known for the Eiffel Tower.",
  "Paris is located in the north-central part of France."
]

# Use the AIOS model to rerank documents.
# The model parameter specifies the model ID to use.
# The query parameter is the search query.
# The documents parameter is the list of documents to search.
# The top_n parameter returns the top N results.
response = client.rerank(
    model=model,
    query="What is the capital of France?",
    documents=docs,
    top_n=3,
)
# Print the rearranged results.
# This result is a list of documents sorted by relevance score between the query and documents.
print([result.model_dump() for result in response.results])
import cohere
from urllib.parse import urljoin

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a Cohere client.
# api_key is the key required by AIOS, typically set to "EMPTY_KEY".
# base_url points to the base path of the AIOS API.
client = cohere.ClientV2("EMPTY_KEY", base_url=aios_base_url)

# Define the list of documents.
# These are the documents to search.
docs = [
  "The capital of France is Paris.",
  "France capital city is known for the Eiffel Tower.",
  "Paris is located in the north-central part of France."
]

# Use the AIOS model to rerank documents.
# The model parameter specifies the model ID to use.
# The query parameter is the search query.
# The documents parameter is the list of documents to search.
# The top_n parameter returns the top N results.
response = client.rerank(
    model=model,
    query="What is the capital of France?",
    documents=docs,
    top_n=3,
)
# Print the rearranged results.
# This result is a list of documents sorted by relevance score between the query and documents.
print([result.model_dump() for result in response.results])
from langchain_cohere.rerank import CohereRerank

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a reranker instance using the CohereRerank class.
# base_url points to the base path of the AIOS API.
# cohere_api_key is the key required for API requests, typically set to "EMPTY_KEY".
# The model parameter specifies the model ID to use.
rerank = CohereRerank(
  base_url=aios_base_url,
  cohere_api_key="EMPTY_KEY",
  model=model
)

# Define the list of documents.
# These are the documents to rearrange.
docs = [
  "The capital of France is Paris.",
  "France capital city is known for the Eiffel Tower.",
  "Paris is located in the north-central part of France."
]

# Use the reranker to rearrange documents.
# The documents parameter is the list of documents to rearrange.
# The query parameter is the search query.
# The top_n parameter returns the top N results.
ranks = rerank.rerank(
  documents=docs, 
  query="What is the capital of France?",
  top_n=3
)

# Print the rearranged results.
# This result is a list of documents sorted by relevance score between the query and documents.
print(ranks)
from langchain_cohere.rerank import CohereRerank

aios_base_url = "<<aios endpoint-url>>" # Enter the aios endpoint-url for calling the AIOS model.
model = "<<model>>"                     # Enter the model ID for calling the AIOS model.

# Create a reranker instance using the CohereRerank class.
# base_url points to the base path of the AIOS API.
# cohere_api_key is the key required for API requests, typically set to "EMPTY_KEY".
# The model parameter specifies the model ID to use.
rerank = CohereRerank(
  base_url=aios_base_url,
  cohere_api_key="EMPTY_KEY",
  model=model
)

# Define the list of documents.
# These are the documents to rearrange.
docs = [
  "The capital of France is Paris.",
  "France capital city is known for the Eiffel Tower.",
  "Paris is located in the north-central part of France."
]

# Use the reranker to rearrange documents.
# The documents parameter is the list of documents to rearrange.
# The query parameter is the search query.
# The top_n parameter returns the top N results.
ranks = rerank.rerank(
  documents=docs, 
  query="What is the capital of France?",
  top_n=3
)

# Print the rearranged results.
# This result is a list of documents sorted by relevance score between the query and documents.
print(ranks)
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// This includes the model ID to use, query, list of documents, and top N results.
const data = {
  model: model,
  query: "What is the capital of France?",
  documents: [
    "The capital of France is Paris.",
    "France capital city is known for the Eiffel Tower.",
    "Paris is located in the north-central part of France.",
  ],
  top_n: 3,
};

// Generate the AIOS API's v2/rerank endpoint URL.
let url = new URL("/v2/rerank", aios_base_url);
// Send a POST request to the AIOS API.
// This endpoint rearranges documents with high relevance by comparing the query and document list.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});
const body = await response.json();
// Print the rearranged results.
// This result is a list of documents sorted by relevance score between the query and documents.
console.log(body.results);
const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Configure the request data.
// This includes the model ID to use, query, list of documents, and top N results.
const data = {
  model: model,
  query: "What is the capital of France?",
  documents: [
    "The capital of France is Paris.",
    "France capital city is known for the Eiffel Tower.",
    "Paris is located in the north-central part of France.",
  ],
  top_n: 3,
};

// Generate the AIOS API's v2/rerank endpoint URL.
let url = new URL("/v2/rerank", aios_base_url);
// Send a POST request to the AIOS API.
// This endpoint rearranges documents with high relevance by comparing the query and document list.
const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
});
const body = await response.json();
// Print the rearranged results.
// This result is a list of documents sorted by relevance score between the query and documents.
console.log(body.results);
import { CohereClientV2 } from "cohere-ai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create a CohereClientV2 client.
// token is the key required for API requests, typically set to "EMPTY_KEY".
// environment points to the base path of the AIOS API.
const cohere = new CohereClientV2({
  token: "EMPTY_KEY",
  environment: aios_base_url,
});

// Define the list of documents.
// These are the documents to rearrange.
const docs = [
  "The capital of France is Paris.",
  "France capital city is known for the Eiffel Tower.",
  "Paris is located in the north-central part of France.",
];

// Use the AIOS model to rearrange documents.
// The model parameter specifies the model ID to use.
// The query parameter is the search query.
// The documents parameter is the list of documents to rearrange.
// The topN parameter returns the top N results.
const response = await cohere.rerank({
  model: model,
  query: "What is the capital of France?",
  documents: docs,
  topN: 3,
});

// Print the rearranged results.
// This result is a list of documents sorted by relevance score between the query and documents.
console.log(response.results);
import { CohereClientV2 } from "cohere-ai";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create a CohereClientV2 client.
// token is the key required for API requests, typically set to "EMPTY_KEY".
// environment points to the base path of the AIOS API.
const cohere = new CohereClientV2({
  token: "EMPTY_KEY",
  environment: aios_base_url,
});

// Define the list of documents.
// These are the documents to rearrange.
const docs = [
  "The capital of France is Paris.",
  "France capital city is known for the Eiffel Tower.",
  "Paris is located in the north-central part of France.",
];

// Use the AIOS model to rearrange documents.
// The model parameter specifies the model ID to use.
// The query parameter is the search query.
// The documents parameter is the list of documents to rearrange.
// The topN parameter returns the top N results.
const response = await cohere.rerank({
  model: model,
  query: "What is the capital of France?",
  documents: docs,
  topN: 3,
});

// Print the rearranged results.
// This result is a list of documents sorted by relevance score between the query and documents.
console.log(response.results);
import { CohereClientV2 } from "cohere-ai";
import { CohereRerank } from "@langchain/cohere";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create a CohereClientV2 client.
// token is the key required for API requests, typically set to "EMPTY_KEY".
// environment points to the base path of the AIOS API.
const cohere = new CohereClientV2({
  token: "EMPTY_KEY",
  environment: aios_base_url,
});

// Create a rearranger instance using the CohereRerank class.
// The model parameter specifies the model ID to use.
// The client parameter passes the CohereClientV2 instance created above.
const reranker = new CohereRerank({
  model: model,
  client: cohere,
});

// Define the list of documents.
// These are the documents to rearrange.
const docs = [
  "The capital of France is Paris.",
  "France capital city is known for the Eiffel Tower.",
  "Paris is located in the north-central part of France.",
];
// Define the search query.
const query = "What is the capital of France?";

// Use the rerank method of the reranker to rearrange documents.
// The first argument is the list of documents to rearrange.
// The second argument is the search query.
const response = await reranker.rerank(docs, query);

// Print the rearranged results.
// This result is a list of documents sorted by relevance score between the query and documents.
console.log(response);
import { CohereClientV2 } from "cohere-ai";
import { CohereRerank } from "@langchain/cohere";

const aios_base_url = "<<aios endpoint-url>>"; // Enter the aios endpoint-url for calling the AIOS model.
const model = "<<model>>";                     // Enter the model ID for calling the AIOS model.

// Create a CohereClientV2 client.
// token is the key required for API requests, typically set to "EMPTY_KEY".
// environment points to the base path of the AIOS API.
const cohere = new CohereClientV2({
  token: "EMPTY_KEY",
  environment: aios_base_url,
});

// Create a rearranger instance using the CohereRerank class.
// The model parameter specifies the model ID to use.
// The client parameter passes the CohereClientV2 instance created above.
const reranker = new CohereRerank({
  model: model,
  client: cohere,
});

// Define the list of documents.
// These are the documents to rearrange.
const docs = [
  "The capital of France is Paris.",
  "France capital city is known for the Eiffel Tower.",
  "Paris is located in the north-central part of France.",
];
// Define the search query.
const query = "What is the capital of France?";

// Use the rerank method of the reranker to rearrange documents.
// The first argument is the list of documents to rearrange.
// The second argument is the search query.
const response = await reranker.rerank(docs, query);

// Print the rearranged results.
// This result is a list of documents sorted by relevance score between the query and documents.
console.log(response);
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the data structure for the POST request.
// Model: Model ID to use
// Query: Search query
// Documents: List of documents to rearrange
// TopN: Return top N results
type PostData struct {
	Model     string   `json:"model"`
	Query     string   `json:"query"`
	Documents []string `json:"documents"`
	TopN      int32    `json:"top_n"`
}

func main() {
	// Create the request data.
	// The query is "What is the capital of France?",
	// and the document list consists of three sentences.
	// TopN is set to 3 to return the top 3 results.
	data := PostData{
		Model: model,
		Query: "What is the capital of France?",
		Documents: []string{
			"The capital of France is Paris.",
			"France capital city is known for the Eiffel Tower.",
			"Paris is located in the north-central part of France.",
		},
		TopN: 3,
	}

	// Marshal the data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v2/rerank endpoint.
	// Compare the query and document list to rearrange documents with high relevance.
	response, err := http.Post(aiosBaseUrl+"/v2/rerank", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the entire response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Unmarshal the response body to map format.
	var v map[string]interface{}
	json.Unmarshal(body, &v)

	// Print the rearranged results in JSON format.
	// This result is a list of documents sorted by relevance score between the query and documents.
	rerank, err := json.MarshalIndent(v["results"], "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(rerank))
}
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

// Define the data structure for the POST request.
// Model: Model ID to use
// Query: Search query
// Documents: List of documents to rearrange
// TopN: Return top N results
type PostData struct {
	Model     string   `json:"model"`
	Query     string   `json:"query"`
	Documents []string `json:"documents"`
	TopN      int32    `json:"top_n"`
}

func main() {
	// Create the request data.
	// The query is "What is the capital of France?",
	// and the document list consists of three sentences.
	// TopN is set to 3 to return the top 3 results.
	data := PostData{
		Model: model,
		Query: "What is the capital of France?",
		Documents: []string{
			"The capital of France is Paris.",
			"France capital city is known for the Eiffel Tower.",
			"Paris is located in the north-central part of France.",
		},
		TopN: 3,
	}

	// Marshal the data to JSON format.
	jsonData, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	// Send a POST request to the AIOS API's v2/rerank endpoint.
	// Compare the query and document list to rearrange documents with high relevance.
	response, err := http.Post(aiosBaseUrl+"/v2/rerank", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	// Read the entire response body.
	body, err := io.ReadAll(response.Body)
	if err != nil {
		panic(err)
	}

	// Unmarshal the response body to map format.
	var v map[string]interface{}
	json.Unmarshal(body, &v)

	// Print the rearranged results in JSON format.
	// This result is a list of documents sorted by relevance score between the query and documents.
	rerank, err := json.MarshalIndent(v["results"], "", "  ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(rerank))
}
package main

import (
	"context"
	"fmt"

	api "github.com/cohere-ai/cohere-go/v2"
	client "github.com/cohere-ai/cohere-go/v2/client"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create a Cohere client.
	// Use WithBaseURL to set the base path of the AIOS API.
	co := client.NewClient(
		client.WithBaseURL(aiosBaseUrl),
	)

	// Define the search query.
	query := "What is the capital of France?"

	// Define the list of documents.
	// These are the documents to rearrange.
	docs := []string{
		"The capital of France is Paris.",
		"France capital city is known for the Eiffel Tower.",
		"Paris is located in the north-central part of France.",
	}

	// Use the AIOS model to rearrange documents.
	// Use &api.V2RerankRequest to set the model, query, and document list.
	resp, err := co.V2.Rerank(
		context.TODO(),
		&api.V2RerankRequest{
			Model:     model,
			Query:     query,
			Documents: docs,
		},
	)

	if err != nil {
		panic(err)
	}

	// Print the rearranged results.
	// This result is a list of documents sorted by relevance score between the query and documents.
	fmt.Println(resp.Results)
}
package main

import (
	"context"
	"fmt"

	api "github.com/cohere-ai/cohere-go/v2"
	client "github.com/cohere-ai/cohere-go/v2/client"
)

const (
	aiosBaseUrl = "<<aios endpoint-url>>" // Enter the aios endpoint-url for calling the AIOS model.
	model = "<<model>>"                   // Enter the model ID for calling the AIOS model.
)

func main() {
	// Create a Cohere client.
	// Use WithBaseURL to set the base path of the AIOS API.
	co := client.NewClient(
		client.WithBaseURL(aiosBaseUrl),
	)

	// Define the search query.
	query := "What is the capital of France?"

	// Define the list of documents.
	// These are the documents to rearrange.
	docs := []string{
		"The capital of France is Paris.",
		"France capital city is known for the Eiffel Tower.",
		"Paris is located in the north-central part of France.",
	}

	// Use the AIOS model to rearrange documents.
	// Use &api.V2RerankRequest to set the model, query, and document list.
	resp, err := co.V2.Rerank(
		context.TODO(),
		&api.V2RerankRequest{
			Model:     model,
			Query:     query,
			Documents: docs,
		},
	)

	if err != nil {
		panic(err)
	}

	// Print the rearranged results.
	// This result is a list of documents sorted by relevance score between the query and documents.
	fmt.Println(resp.Results)
}
Code block. /v2/rerank request
Note
The aios endpoint-url and model ID information for calling the model are provided in the LLM Endpoint Usage Guide on the resource detail page. Please refer to Using LLM.

Response

In results, you can check the documents sorted in order of high relevance to the query.

[
  {'document': {'text': 'The capital of France is Paris.'},
    'index': 0,
    'relevance_score': 0.9999659061431885},
  {'document': {'text': 'France capital city is known for the Eiffel Tower.'},
    'index': 1,
    'relevance_score': 0.9663000106811523},
  {'document': {'text': 'Paris is located in the north-central part of France.'},
    'index': 2,
    'relevance_score': 0.7127546668052673}
]
Autogen
Release Note