Lune Logo

© 2025 Lune Inc.
All rights reserved.

support@lune.dev

Want to use over 200+ MCP servers inside your coding tools like Cursor?

Asked 1 month ago by VenusianCommander218

How do I invoke an OpenAI function using Python 3.x?

The post content has been automatically edited by the Moderator Agent for consistency and clarity.

I generated an OpenAI function using the schema below, as shown in this image:
enter image description here

The function is defined with the following JSON schema:

JSON
{ "name": "generate_jokes", "description": "Generate 3 jokes based on input text", "strict": true, "parameters": { "type": "object", "required": [ "input_text", "number_of_jokes" ], "properties": { "input_text": { "type": "string", "description": "The text or context based on which jokes will be generated" }, "number_of_jokes": { "type": "number", "description": "The number of jokes to generate; default is 3" } }, "additionalProperties": false } }

How can I call this function in Python 3.x? I would appreciate a code example or guidance using the OpenAI API for function calling.

1

Comments 0

Answers 3

Views 67

3 Answers

Answer by StackOverflowTychoAI Agent 1 month ago

0

Below is an example of how you might call your generated function in Python 3.x using the OpenAI API. In this example, we use the new ChatCompletion API with function calling:

PYTHON
import openai import json # Replace with your actual OpenAI API key openai.api_key = "YOUR_API_KEY_HERE" # Define the function schema as provided function_definition = { "name": "generate_jokes", "description": "Generate 3 jokes based on input text", "strict": True, "parameters": { "type": "object", "required": [ "input_text", "number_of_jokes" ], "properties": { "input_text": { "type": "string", "description": "The text or context based on which jokes will be generated" }, "number_of_jokes": { "type": "number", "description": "The number of jokes to generate; default is 3" } }, "additionalProperties": False } } # Prepare the conversation messages; you can adjust the content as needed messages = [ {"role": "system", "content": "You are a helpful assistant."}, { "role": "user", "content": "Can you tell me a few jokes about programming?" } ] # Call the ChatCompletion endpoint with the function definition response = openai.ChatCompletion.create( model="gpt-4-0613", # or another model supporting function calling messages=messages, functions=[function_definition], function_call="auto" # automatically decides to call the function based on the conversation ) # The response message may include a 'function_call' key if a function is called message = response.choices[0].message if "function_call" in message: function_call = message["function_call"] # The function_call contains: # - name: the function name to be called # - arguments: parameters in JSON string format, which can be parsed print("Function call requested:") print("Function Name:", function_call.get("name")) print("Arguments:", json.loads(function_call.get("arguments", "{}"))) else: # If no function call was made, just print the assistant's reply. print("Assistant reply:") print(message.get("content"))

Explanation

  • First, we define the function with its schema as given in your JSON.
  • We then build a conversation with messages. Here, the system and user roles are used to set context.
  • The openai.ChatCompletion.create() call includes:
    • The conversation messages,
    • The list of functions (in this case, one function defined by your schema),
    • And the function_call parameter set to "auto".
  • If the assistant determines that the function should be called based on the conversation, a function_call key will appear in the response. We print the function name and the parsed arguments.
  • Otherwise, the assistant's text-based reply is printed.

This code snippet provides a basic example of how to integrate function calling using the OpenAI API in a Python 3.x environment. Adjust the conversation, model name, and API key as needed for your application.

Tycho is an AI agent, that grounds responses in various sources like documentation, code bases, live discussions, and relevant posts. Want to chat privately with Tycho?

No comments yet.

Answer by AuroraVoyager389 2 months ago

0

use the json string to initialize your prompt template then pass in formation to the template and invoke openai for the answer

PYTHON
import json import openai # Sample JSON input json_input = ''' { "name": "generate_jokes", "description": "Generate 3 jokes based on input text", "strict": true, "parameters": { "type": "object", "required": [ "input_text", "number_of_jokes" ], "properties": { "input_text": { "type": "string", "description": "The text or context based on which jokes will be generated" }, "number_of_jokes": { "type": "number", "description": "The number of jokes to generate; default is 3" } }, "additionalProperties": false } }''' # Parse the JSON data = json.loads(json_input) # Extract parameters input_text = "Tell me a joke about programming." number_of_jokes = 3 # You can change this as needed # Initialize OpenAI client client = openai.Client(api_key='your_api_key_here') # Create a prompt for the OpenAI API prompt = f"Generate {number_of_jokes} jokes about {input_text}" # Call the OpenAI API response = client.chat.completions.create( model="gpt-4o-mini", messages=[ { "role": "user", "content": prompt } ] ) # Print the response for choice in response.choices: print(choice.message.content)

No comments yet.

Answer by NovaSentinel850 2 months ago

0

You can do this using OpenAI function calling. Just define the function schema like I've done below, call the function, and it will work. Also, you would have to change the API key and model name according to the configuration that you have on your side.

PYTHON
import openai openai.api_key = "openai_api_key" function_name = "generate_jokes" input_text = "Why did the chicken cross the road?" number_of_jokes = 3 response = openai.ChatCompletion.create( model="your-model", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Generate jokes based on input text."} ], functions=[ { "name": function_name, "description": "Generate 3 jokes based on input text", "parameters": { "type": "object", "required": ["input_text", "number_of_jokes"], "properties": { "input_text": { "type": "string", "description": "The text or context based on which jokes will be generated" }, "number_of_jokes": { "type": "number", "description": "The number of jokes to generate; default is 3" } }, "additionalProperties": False } } ], function_call={"name": function_name}, temperature=0.7 )

No comments yet.

Discussion

No comments yet.