Files
LLM_Engineering_OLD/week1/solution.py

54 lines
1.4 KiB
Python

"""
Website summarizer using Ollama instead of OpenAI.
"""
from openai import OpenAI
from scraper import fetch_website_contents
OLLAMA_BASE_URL = "http://localhost:11434/v1"
MODEL = "llama3.2"
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.
"""
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):
"""Create message list for the LLM."""
return [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt_prefix + website}
]
def summarize(url):
"""Fetch and summarize a website using Ollama."""
ollama = OpenAI(base_url=OLLAMA_BASE_URL, api_key='ollama')
website = fetch_website_contents(url)
response = ollama.chat.completions.create(
model=MODEL,
messages=messages_for(website)
)
return response.choices[0].message.content
def main():
"""Main entry point for testing."""
url = input("Enter a URL to summarize: ")
print("\nFetching and summarizing...\n")
summary = summarize(url)
print(summary)
if __name__ == "__main__":
main()