Lesson 9 of 20

Functions & Classes

Defining Functions

3 min read

Functions are reusable blocks of code. In AI development, you'll create functions for prompt formatting, API calls, response processing, and more.

Basic Function Syntax

def greet(name):
    """Return a greeting message."""
    return f"Hello, {name}!"

# Calling the function
message = greet("Claude")  # "Hello, Claude!"

Parameters and Arguments

# Required parameters
def chat(message, model):
    return f"[{model}]: {message}"

# Default parameters
def chat(message, model="gpt-4"):
    return f"[{model}]: {message}"

chat("Hi")                  # Uses default model
chat("Hi", model="claude")  # Override default

*args and **kwargs

These allow flexible argument handling:

# *args: Accept any number of positional arguments
def sum_all(*numbers):
    return sum(numbers)

sum_all(1, 2, 3)      # 6
sum_all(1, 2, 3, 4, 5)  # 15

# **kwargs: Accept any number of keyword arguments
def create_message(**kwargs):
    return kwargs

create_message(role="user", content="Hi")
# {'role': 'user', 'content': 'Hi'}

# Combining both
def api_call(endpoint, *args, **kwargs):
    print(f"Calling {endpoint}")
    print(f"Args: {args}")
    print(f"Kwargs: {kwargs}")

Practical AI Example

def format_messages(system_prompt, *user_messages):
    """Format messages for chat API."""
    messages = [{"role": "system", "content": system_prompt}]

    for msg in user_messages:
        messages.append({"role": "user", "content": msg})

    return messages

# Usage
messages = format_messages(
    "You are a helpful assistant.",
    "Hello!",
    "What can you do?"
)

Return Values

# Return single value
def get_model():
    return "gpt-4"

# Return multiple values (as tuple)
def get_config():
    return "gpt-4", 0.7, 1000  # model, temp, max_tokens

model, temp, tokens = get_config()

# Return None implicitly
def log(message):
    print(message)
    # No return statement = returns None

Lambda Functions

Short anonymous functions for simple operations:

# Regular function
def double(x):
    return x * 2

# Lambda equivalent
double = lambda x: x * 2

# Common use: sorting
models = [("gpt-4", 0.03), ("gpt-3.5", 0.002)]
sorted_by_price = sorted(models, key=lambda m: m[1])

Next, we'll learn about classes and object-oriented programming. :::

Quiz

Module 3: Functions & Classes

Take Quiz