ai-web-summarizer
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
def fetch_web_content(url):
|
||||
try:
|
||||
response = requests.get(url)
|
||||
response.raise_for_status()
|
||||
|
||||
# Parse the HTML content
|
||||
soup = BeautifulSoup(response.text, 'html.parser')
|
||||
|
||||
# Extract readable text from the web page (ignoring scripts, styles, etc.)
|
||||
page_text = soup.get_text(separator=' ', strip=True)
|
||||
|
||||
return page_text[:5000] # Limit to 5000 chars (API limitation)
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"Error fetching the webpage: {e}")
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
url = "https://en.wikipedia.org/wiki/Natural_language_processing"
|
||||
content = fetch_web_content(url)
|
||||
print(content[:500]) # Print a sample of the content
|
||||
@@ -0,0 +1,85 @@
|
||||
import openai # type: ignore
|
||||
import ollama
|
||||
import requests
|
||||
from utils.config import Config
|
||||
|
||||
# Local Ollama API endpoint
|
||||
OLLAMA_API = "http://127.0.0.1:11434/api/chat"
|
||||
|
||||
# Initialize OpenAI client with API key
|
||||
client = openai.Client(api_key=Config.OPENAI_API_KEY)
|
||||
|
||||
def summarize_with_openai(text, model):
|
||||
"""Summarize text using OpenAI's GPT model."""
|
||||
try:
|
||||
response = client.chat.completions.create(
|
||||
model=model,
|
||||
messages=[
|
||||
{"role": "system", "content": "You are a helpful assistant that summarizes web pages."},
|
||||
{"role": "user", "content": f"Summarize the following text: {text}"}
|
||||
],
|
||||
max_tokens=300,
|
||||
temperature=0.7
|
||||
)
|
||||
return response.choices[0].message.content
|
||||
except Exception as e:
|
||||
print(f"Error during OpenAI summarization: {e}")
|
||||
return None
|
||||
|
||||
def summarize_with_ollama_lib(text, model):
|
||||
"""Summarize text using Ollama Python library."""
|
||||
try:
|
||||
messages = [
|
||||
{"role": "system", "content": "You are a helpful assistant that summarizes web pages."},
|
||||
{"role": "user", "content": f"Summarize the following text: {text}"}
|
||||
]
|
||||
response = ollama.chat(model=model, messages=messages)
|
||||
return response['message']['content']
|
||||
except Exception as e:
|
||||
print(f"Error during Ollama summarization: {e}")
|
||||
return None
|
||||
|
||||
def summarize_with_ollama_api(text, model):
|
||||
"""Summarize text using local Ollama API."""
|
||||
try:
|
||||
payload = {
|
||||
"model": model,
|
||||
"messages": [
|
||||
{"role": "system", "content": "You are a helpful assistant that summarizes web pages."},
|
||||
{"role": "user", "content": f"Summarize the following text: {text}"}
|
||||
],
|
||||
"stream": False # Set to True for streaming responses
|
||||
}
|
||||
response = requests.post(OLLAMA_API, json=payload)
|
||||
response_data = response.json()
|
||||
return response_data.get('message', {}).get('content', 'No summary generated')
|
||||
except Exception as e:
|
||||
print(f"Error during Ollama API summarization: {e}")
|
||||
return None
|
||||
|
||||
def summarize_text(text, model, engine="openai"):
|
||||
"""Generic function to summarize text using the specified engine (openai/ollama-lib/ollama-api)."""
|
||||
if engine == "openai":
|
||||
return summarize_with_openai(text, model)
|
||||
elif engine == "ollama-lib":
|
||||
return summarize_with_ollama_lib(text, model)
|
||||
elif engine == "ollama-api":
|
||||
return summarize_with_ollama_api(text, model)
|
||||
else:
|
||||
print("Invalid engine specified. Use 'openai', 'ollama-lib', or 'ollama-api'.")
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
sample_text = "Artificial intelligence (AI) is intelligence demonstrated by machines, as opposed to the natural intelligence displayed by animals and humans."
|
||||
|
||||
# Summarize using OpenAI
|
||||
openai_summary = summarize_text(sample_text, model="gpt-3.5-turbo", engine="openai")
|
||||
print("OpenAI Summary:", openai_summary)
|
||||
|
||||
# Summarize using Ollama Python library
|
||||
ollama_lib_summary = summarize_text(sample_text, model="deepseek-r1:1.5B", engine="ollama-lib")
|
||||
print("Ollama Library Summary:", ollama_lib_summary)
|
||||
|
||||
# Summarize using local Ollama API
|
||||
ollama_api_summary = summarize_text(sample_text, model="deepseek-r1:1.5B", engine="ollama-api")
|
||||
print("Ollama API Summary:", ollama_api_summary)
|
||||
Reference in New Issue
Block a user