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.
swarms/examples/utils/litellm_network_error_handl...

150 lines
4.4 KiB

"""
Example demonstrating network error handling in LiteLLM wrapper.
This example shows how the LiteLLM wrapper handles network connectivity issues
and provides helpful error messages to guide users to use local models like Ollama
when internet connection is unavailable.
"""
from swarms.utils import LiteLLM, NetworkConnectionError
def example_with_network_handling():
"""
Example of using LiteLLM with proper network error handling.
This function demonstrates how to catch NetworkConnectionError
and handle it appropriately.
"""
# Initialize LiteLLM with a cloud model
model = LiteLLM(
model_name="gpt-4o-mini",
temperature=0.7,
max_tokens=1000,
)
try:
# Try to run the model
response = model.run(
task="Explain the concept of quantum entanglement in simple terms."
)
print(f"Response: {response}")
except NetworkConnectionError as e:
# Handle network connectivity issues
print(f"Network error detected: {e}")
print("\nFalling back to local model...")
# Fallback to a local Ollama model
local_model = LiteLLM(
model_name="ollama/llama2",
temperature=0.7,
max_tokens=1000,
)
try:
response = local_model.run(
task="Explain the concept of quantum entanglement in simple terms."
)
print(f"Local model response: {response}")
except Exception as local_error:
print(f"Local model error: {local_error}")
print("\nMake sure Ollama is installed and running:")
print("1. Install: https://ollama.ai")
print("2. Run: ollama pull llama2")
print("3. Start the server if not running")
def example_check_internet_connection():
"""
Example of manually checking internet connectivity.
This function demonstrates how to use the static method
to check internet connection before attempting API calls.
"""
# Check if internet is available
has_internet = LiteLLM.check_internet_connection()
if has_internet:
print("✓ Internet connection available")
model = LiteLLM(model_name="gpt-4o-mini")
else:
print("✗ No internet connection detected")
print("Using local Ollama model instead...")
model = LiteLLM(model_name="ollama/llama2")
# Use the model
try:
response = model.run(task="What is the meaning of life?")
print(f"Response: {response}")
except NetworkConnectionError as e:
print(f"Error: {e}")
def example_is_local_model():
"""
Example of checking if a model is a local model.
This function demonstrates how to determine if a model
is local or requires internet connectivity.
"""
# Check various model names
models = [
"gpt-4o-mini",
"ollama/llama2",
"anthropic/claude-3",
"ollama/mistral",
"local/custom-model",
]
for model_name in models:
is_local = LiteLLM.is_local_model(model_name)
status = "Local" if is_local else "Cloud"
print(f"{model_name}: {status}")
def example_with_custom_base_url():
"""
Example of using LiteLLM with a custom base URL.
This demonstrates using a local model server with custom base URL.
"""
# Using Ollama with custom base URL
model = LiteLLM(
model_name="ollama/llama2",
base_url="http://localhost:11434",
temperature=0.7,
)
try:
response = model.run(task="Write a haiku about programming.")
print(f"Response: {response}")
except NetworkConnectionError as e:
print(f"Connection error: {e}")
print("\nTroubleshooting:")
print("- Ensure Ollama is running on localhost:11434")
print("- Check if the model is loaded: ollama list")
print("- Try: ollama serve")
if __name__ == "__main__":
print("=" * 70)
print("Example 1: Network Error Handling with Fallback")
print("=" * 70)
example_with_network_handling()
print("\n" + "=" * 70)
print("Example 2: Manual Internet Connection Check")
print("=" * 70)
example_check_internet_connection()
print("\n" + "=" * 70)
print("Example 3: Check if Model is Local")
print("=" * 70)
example_is_local_model()
print("\n" + "=" * 70)
print("Example 4: Custom Base URL")
print("=" * 70)
example_with_custom_base_url()