OpenAI
The Compatibility API allows developers to use SeekrFlow through OpenAI’s SDK.
It makes it easy to switch existing OpenAI-based applications to use Seekr’s models while still maintaining the use of OpenAI SDK — no big refactors needed.
Installation
First, install the OpenAI SDK and import the package.
Then, create a client and configure it with the Compatibility API base URL and your Seekr API key.
import os
import openai
# Set the API key
os.environ["OPENAI_API_KEY"] = "Your OpenAI API key here"
# Create the OpenAI client and retrieve the API key.
client = openai.OpenAI(
base_url="https://flow.seekr.com/v1/inference",
api_key=os.environ.get("SEEKR_API_KEY")
)Basic chat completions
Here’s a basic example using the Chat Completions API:
from openai import OpenAI
client = OpenAI(
base_url="https://flow.seekr.com/v1/inference",
api_key="SEEKR_API_KEY",
)
completion = client.chat.completions.create(
model="meta-llama/Meta-Llama-3-8B",
messages=[
{
"role": "user",
"content": "Write a haiku about eating cake at the gym.",
},
],
)
print(completion.choices[0].message)
Chat with streaming
To stream the response, set the stream parameter to True.
from openai import OpenAI
client = OpenAI(
base_url="https://flow.seekr.com/v1/inference",
api_key="SEEKR_API_KEY",
)
stream = client.chat.completions.create(
model="meta-llama/Meta-Llama-3-8B",
messages=[
{
"role": "user",
"content": "Write a haiku about eating cake at the gym.",
},
],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")
State management
For state management, use the messages parameter to build the conversation history.
You can include a system message via the developer role and the multiple chat turns between the user and assistant.
from openai import OpenAI
client = OpenAI(
base_url="https://flow.seekr.com/v1/inference",
api_key="SEEKR_API_KEY",
)
completion = client.chat.completions.create(
messages=[
{
"role": "user",
"content": "Respond in the style of Russ Hanneman.",
},
{
"role": "user",
"content": "What does ROI mean?",
},
{
"role": "assistant",
"content": "Radio. On. Internet.",
},
{
"role": "user",
"content": "How did you make your first billion?",
},
],
model="meta-llama/Meta-Llama-3-8B",
)
print(completion.choices[0].message)
Tool use (function calling)
You can utilize the tool use feature by passing a list of tools to the tools parameter in the API call. This one creates a custom unit conversion tool that can be configured dynamically.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://flow.seekr.com/v1/inference",
api_key=os.environ.get("OPENAI_API_KEY")
)
# Send a request to the OpenAI API to leverage the specified Llama model as a unit conversion tool.
response = client.chat.completions.create(
model="meta-llama/Llama-3.1-8B-Instruct",
stream=False,
messages=[{
"role": "user",
"content": "Convert from 5 kilometers to miles"
}],
max_tokens=100,
tools=[{
"type": "function",
"function": {
"name": "convert_units",
"description": "Convert between different units of measurement",
"parameters": {
"type": "object",
"properties": {
"value": {"type": "number"},
"from_unit": {"type": "string"},
"to_unit": {"type": "string"}
},
"required": ["value", "from_unit", "to_unit"]
}
}
}]
) Next, register the function from JSON and run the unit conversion tool:
# Parse json and register
def register_from_json(json_obj):
code = f"def {json_obj['name']}({', '.join(json_obj['args'])}):\n{json_obj['docstring']}\n{json_obj['code']}"
print(code)
namespace = {}
exec(code, namespace)
return namespace[json_obj["name"]]
# Execute our tool
def execute_tool_call(resp):
tool_call = resp.choices[0].message.tool_calls[0]
func_name = tool_call.function.name
args = tool_call.function.arguments
func = globals().get(func_name)
if not func:
raise ValueError(f"Function {func_name} not found")
if isinstance(args, str):
import json
args = json.loads(args)
return func(**args)
execute_tool_call(response)Supported parameters
The following is the list supported parameters in the Compatibility API, including those that are not explicitly demonstrated in the examples above:
- model
- messages
- stream
- temperature
- logprobs
- top_logprobs
- max_tokens
- stop
- top_p
- frequency_penalty
- presence_penalty
Unsupported parameters
The following parameters are not supported in the Compatibility API:
- tool_choice
- store
- reasoning_effort
- metadata
- logit_bias
- max_completion_tokens
- n
- modalities
- prediction
- audio
- service_tier
- stream_options
- parallel_tool_calls
- user
