DEV Community

Dan Humphreys
Dan Humphreys

Posted on

Generating Python code using Anthropic API for Claude AI

Python Code Generation using the API for Claude AI

Generating and running a simple Python function using Anthropic Claude APIs.

The following shows how we can use the Anthropic Claude LLM API to generate a simple Python function and run it. We tell the API what we want our function to do; Claude AI API generates the code; we save this code to a file and function; then run it.

The code (also found here):

import anthropic

client = anthropic.Anthropic()

def generate_code(prompt):
    return client.messages.create(
        model="claude-3-5-sonnet-20240620",
        max_tokens=1024,
        messages=[
            {"role": "user", "content": prompt}
        ]
    ).content[0].text

def write_function(module_name, code):
    f = open(module_name + ".py", "w")
    f.write(code)
    f.close()

def run_function(module_name, function_name, a, b):
    module = __import__(module_name)
    print(getattr(module, function_name)(a, b))

if __name__ == '__main__':
    module_name = "maths"
    function_name = "is_even"
    prompt = f"Write a function in Python called {function_name}. "
    prompt += "The function should accept two integers. "
    prompt += "The function should return a boolean. "
    prompt += "The function should do the following: "
    prompt += "1. Return true if the sum of the integers is even. "
    prompt += "2. Return false if the sum of the integers is odd. "
    prompt += "Do not include any markdown, code block indicators or description. "

    code = generate_code(prompt)
    write_function(module_name, code)
    run_function(module_name, function_name, 2, 3)
    run_function(module_name, function_name, 5, 7)
Enter fullscreen mode Exit fullscreen mode

We're using the Anthropic SDK library for Python to access the API:

import anthropic
Enter fullscreen mode Exit fullscreen mode

If you want to run this example you'll have to install it:

pip install anthropic

Then we create a client:

client = anthropic.Anthropic()
Enter fullscreen mode Exit fullscreen mode

By default, the SDK looks at the value of ANTHROPIC_API_KEY which was set to the key secret beforehand. See here for instructions on how to request an API key, note that this requires setting up billing. Generating the example here costs fractions of a UK penny.

We create a function that takes a string prompt and returns the text containing the result of running the prompt on the API. The model, max_tokens and messages attributes are set; messages takes the prompt string as a dictionary attribute.

def generate_code(prompt):
    return client.messages.create(
        model="claude-3-5-sonnet-20240620",
        max_tokens=1024,
        messages=[
            {"role": "user", "content": prompt}
        ]
    ).content[0].text
Enter fullscreen mode Exit fullscreen mode

We create a function to write the API response to a python file. This function takes two arguments, module_name and code:

def write_function(module_name, code):
    f = open(module_name + ".py", "w")
    f.write(code)
    f.close()
Enter fullscreen mode Exit fullscreen mode

Now we have a Python module containing the response from the API and we know the module name and function name we can create a function to run it and print the results:

def run_function(module_name, function_name, a, b):
    module = __import__(module_name)
    print(getattr(module, function_name)(a, b))
Enter fullscreen mode Exit fullscreen mode

This function imports the module name and runs the function, passing in two parameters a and b, printing the output.

Finally we can create a main block, create a prompt by concatenating strings and run the functions:

if __name__ == '__main__':
    module_name = "maths"
    function_name = "is_even"
    prompt = f"Write a function in Python called {function_name}. "
    prompt += "The function should accept two integers. "
    prompt += "The function should return a boolean. "
    prompt += "The function should do the following: "
    prompt += "1. Return true if the sum of the integers is even. "
    prompt += "2. Return false if the sum of the integers is odd. "
    prompt += "Do not include any markdown, code block indicators or description. "

    code = generate_code(prompt)
    write_function(module_name, code)
    run_function(module_name, function_name, 2, 3)
    run_function(module_name, function_name, 5, 7)
Enter fullscreen mode Exit fullscreen mode

We are saving the function is_even in a module named maths. The string prompt we are passing to the API is:

Write a function in Python called is_even.
The function should accept two integers.
The function should return a boolean.
The function should do the following:
1. Return true if the sum of the integers is even.
2. Return false if the sum of the integers is odd.
Do not include any markdown, code block indicators or description.
Enter fullscreen mode Exit fullscreen mode

The content of maths.py (which is the response from the Claude API to the prompt) is:

def is_even(num1, num2):
    return (num1 + num2) % 2 == 0
Enter fullscreen mode Exit fullscreen mode

And when the script is run this is the output:

False
True
Enter fullscreen mode Exit fullscreen mode

Which is correct since 2 + 3 is odd and 5 + 7 is even.

Top comments (0)