π€ First api call to Frontier Model
import os
from dotenv import load_dotenv
from IPython.display import Markdown, display
from openai import OpenAI# Load environment variables from .env file
load_dotenv(override=True)
api_key = os.getenv('OPENAI_API_KEY')
#Validate the key
if not api_key:
print("No API key was found - please head over to the troubleshooting notebook in this folder to identify & fix!")
elif not api_key.startswith("sk-proj-"):
print("An API key was found, but it doesn't start sk-proj-; please check you're using the right key - see troubleshooting notebook")
elif api_key.strip() != api_key:
print("An API key was found, but it looks like it might have space or tab characters at the start or end - please remove them - see troubleshooting notebook")
else:
print("API key found and looks good so far!")# To give you a preview -- calling OpenAI with these messages is this easy.
message = "Hello, GPT! This is my first ever message to you! Hi!"
messages = [{"role": "user", "content": message}]
messagesopenai = OpenAI()
response = openai.chat.completions.create(model="gpt-5-nano", messages=messages)
response.choices[0].message.contentπ§ System and User Prompt
system_prompt = "You are a helpful assistant who explains complex topics in simple, beginner-friendly language."
user_prompt = "Can you explain what a Large Language Model is?"messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
]
response = openai.chat.completions.create(model="gpt-4o-mini", messages=messages)
print(response.choices[0].message.content)π Website Summariser Project
from scraper import fetch_website_contents# Define our system prompt - you can experiment with this later, changing the last sentence to 'Respond in markdown in Spanish."
system_prompt = """
You are a snarky assistant that analyzes the contents of a website,
and provides a short, snarky, humorous summary, ignoring text that might be navigation related.
Respond in markdown. Do not wrap the markdown in a code block - respond just with the markdown.
"""
# Define our user prompt
user_prompt_prefix = """
Here are the contents of a website.
Provide a short summary of this website.
If it includes news or announcements, then summarize these too.
"""def messages_for(website):
return [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt_prefix + website}
]# And now: call the OpenAI API. You will get very familiar with this!
def summarize(url):
website = fetch_website_contents(url)
response = openai.chat.completions.create(
model = "gpt-4.1-mini",
messages = messages_for(website)
)
return response.choices[0].message.contentsummarize("<https://codeveda.dev>")π View the Raw Scraped Data to compare with LLM version
scrapedData = fetch_website_contents("<https://codeveda.dev>")
print(scrapedData)π¨ Bonus β Display the Summary in a Nicer Format
# A function to display this nicely in the output, using markdown
def display_summary(url):
summary = summarize(url)
display(Markdown(summary))
display_summary("<https://codeveda.dev>")