Experiment
OpenAI
Introduction
Evaluation
- Overview
- Quickstart
- Concept
- How To
- Eval Definition
Build
- Overview
- Concept
- How To
Experimentation
Observability
Admin & Settings
Experiment
OpenAI
Install Future AGI
pip install futureagi
Set Environment Variables
import os
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
os.environ["FI_API_KEY"] = "your-futureagi-api-key"
os.environ["FI_SECRET_KEY"] = "your-futureagi-secret-key"
Define Evaluation Tags
from fi.integrations.otel.types import EvalName, EvalSpanKind, EvalTag, EvalTagType
eval_tags = [
EvalTag(
eval_name=EvalName.DETERMINISTIC_EVALS,
value=EvalSpanKind.TOOL,
type=EvalTagType.OBSERVATION_SPAN,
config={
"multi_choice": False,
"choices": ["Yes", "No"],
"rule_prompt": "Evaluate if the function call is correct",
},
custom_eval_name="det_eval_openai_1"
)
]
Register Future AGI Tracer Provider
from fi.integrations.otel import register
from fi.integrations.otel.types import ProjectType
trace_provider = register(
endpoint = "https://api.futureagi.com/tracer/observation-span/create_otel_span/",
project_type=ProjectType.EXPERIMENT,
project_name="function_calling_demo12",
project_version_name="v1",
eval_tags=eval_tags
)
Instrument OpenAI
from fi.integrations.otel import OpenAIInstrumentor
OpenAIInstrumentor().instrument(tracer_provider=trace_provider)
Define Function to Call OpenAI
import openai
from openai.types.chat import ChatCompletionToolMessageParam, ChatCompletionUserMessageParam
def get_weather_info():
messages = [
ChatCompletionUserMessageParam(
role="user",
content="What's the weather like in San Francisco?"
)
]
client = openai.OpenAI()
response = client.chat.completions.create(
model="gpt-4",
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather information for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name, e.g., 'San Francisco'"
}
},
"required": ["city"]
}
}
}],
messages=messages
)
message = response.choices[0].message
if tool_calls := message.tool_calls:
tool_call_id = tool_calls[0].id
messages.append(message)
messages.append(
ChatCompletionToolMessageParam(
content="72°F and sunny",
role="tool",
tool_call_id=tool_call_id
)
)
final_response = client.chat.completions.create(
model="gpt-4",
messages=messages
)
return final_response.choices[0].message.content
return "No function call was made"
if __name__ == "__main__":
try:
result = get_weather_info()
print(f"Response: {result}")
except Exception as e:
print(f"Error: {e}")