From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
3.4 KiB
85 lines
3.4 KiB
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)
|
|
|