Spaces:
Runtime error
Runtime error
| #!/usr/bin/env python3 | |
| """ | |
| Example usage of the Groq LangChain integration service. | |
| This script demonstrates how to use the GroqClient for chat-based | |
| programming assistance with language context switching and chat history. | |
| """ | |
| import os | |
| import sys | |
| from datetime import datetime | |
| # Add parent directory to path for imports | |
| sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| from chat_agent.services.groq_client import ( | |
| GroqClient, | |
| ChatMessage, | |
| LanguageContext, | |
| create_language_context, | |
| GroqAuthenticationError | |
| ) | |
| def example_basic_usage(): | |
| """Example of basic GroqClient usage""" | |
| print("=== Basic GroqClient Usage Example ===\n") | |
| try: | |
| # Initialize client (requires GROQ_API_KEY environment variable) | |
| client = GroqClient() | |
| print("✓ GroqClient initialized successfully") | |
| # Get model information | |
| info = client.get_model_info() | |
| print(f"Model: {info['model']}") | |
| print(f"Max tokens: {info['max_tokens']}") | |
| print(f"Temperature: {info['temperature']}") | |
| print() | |
| except GroqAuthenticationError: | |
| print("❌ API key not configured. Set GROQ_API_KEY environment variable.") | |
| return None | |
| return client | |
| def example_language_contexts(): | |
| """Example of creating and using language contexts""" | |
| print("=== Language Context Examples ===\n") | |
| # Create contexts for different programming languages | |
| languages = ["python", "javascript", "java", "cpp"] | |
| for lang in languages: | |
| context = create_language_context(lang) | |
| print(f"{lang.upper()} Context:") | |
| print(f" Language: {context.language}") | |
| print(f" Syntax highlighting: {context.syntax_highlighting}") | |
| print(f" Template preview: {context.prompt_template[:100]}...") | |
| print() | |
| def example_chat_history(): | |
| """Example of building chat history""" | |
| print("=== Chat History Example ===\n") | |
| # Create sample chat history | |
| chat_history = [ | |
| ChatMessage( | |
| role="user", | |
| content="What is Python?", | |
| language="python", | |
| timestamp=datetime.now().isoformat() | |
| ), | |
| ChatMessage( | |
| role="assistant", | |
| content="Python is a high-level, interpreted programming language known for its simplicity and readability.", | |
| language="python", | |
| timestamp=datetime.now().isoformat() | |
| ), | |
| ChatMessage( | |
| role="user", | |
| content="How do I create a list in Python?", | |
| language="python", | |
| timestamp=datetime.now().isoformat() | |
| ), | |
| ChatMessage( | |
| role="assistant", | |
| content="You can create a list in Python using square brackets: my_list = [1, 2, 3, 'hello']", | |
| language="python", | |
| timestamp=datetime.now().isoformat() | |
| ) | |
| ] | |
| print(f"Created chat history with {len(chat_history)} messages:") | |
| for i, msg in enumerate(chat_history, 1): | |
| print(f" {i}. {msg.role}: {msg.content[:50]}...") | |
| print() | |
| return chat_history | |
| def example_message_building(client, chat_history): | |
| """Example of building messages for API calls""" | |
| print("=== Message Building Example ===\n") | |
| if not client: | |
| print("Skipping message building (no client available)") | |
| return | |
| # Create language context | |
| python_context = create_language_context("python") | |
| # Build messages for a new prompt | |
| messages = client._build_messages( | |
| prompt="Can you explain list comprehensions?", | |
| chat_history=chat_history, | |
| language_context=python_context | |
| ) | |
| print(f"Built {len(messages)} messages for API call:") | |
| for i, msg in enumerate(messages, 1): | |
| print(f" {i}. {msg.role}: {msg.content[:80]}...") | |
| print() | |
| def example_error_handling(client): | |
| """Example of error handling""" | |
| print("=== Error Handling Examples ===\n") | |
| if not client: | |
| print("Skipping error handling (no client available)") | |
| return | |
| # Test different error scenarios | |
| error_scenarios = [ | |
| ("Rate limit error", Exception("Rate limit exceeded (429)")), | |
| ("Authentication error", Exception("Authentication failed (401)")), | |
| ("Network error", Exception("Network connection timeout")), | |
| ("Quota error", Exception("Quota exceeded for billing account")), | |
| ("Unknown error", Exception("Something unexpected happened")) | |
| ] | |
| for scenario_name, error in error_scenarios: | |
| try: | |
| result = client._handle_api_error(error) | |
| print(f"{scenario_name}: {result}") | |
| except Exception as e: | |
| print(f"{scenario_name}: Raised {type(e).__name__}: {e}") | |
| print() | |
| def example_streaming_simulation(): | |
| """Example of how streaming would work (simulated)""" | |
| print("=== Streaming Response Simulation ===\n") | |
| # Simulate streaming response chunks | |
| simulated_chunks = [ | |
| "List comprehensions ", | |
| "are a concise way ", | |
| "to create lists in Python. ", | |
| "The syntax is: ", | |
| "[expression for item in iterable if condition]. ", | |
| "For example: ", | |
| "squares = [x**2 for x in range(10)]" | |
| ] | |
| print("Simulated streaming response:") | |
| full_response = "" | |
| for chunk in simulated_chunks: | |
| full_response += chunk | |
| print(f"Chunk: '{chunk}'") | |
| print(f"\nComplete response: {full_response}") | |
| print() | |
| def example_language_switching(): | |
| """Example of language context switching""" | |
| print("=== Language Switching Example ===\n") | |
| # Start with Python | |
| current_language = "python" | |
| python_context = create_language_context(current_language) | |
| print(f"Started with {current_language.upper()}") | |
| # Simulate conversation in Python | |
| python_history = [ | |
| ChatMessage(role="user", content="How do I create a function in Python?"), | |
| ChatMessage(role="assistant", content="def my_function(): pass") | |
| ] | |
| # Switch to JavaScript | |
| current_language = "javascript" | |
| js_context = create_language_context(current_language) | |
| print(f"Switched to {current_language.upper()}") | |
| # Continue conversation in JavaScript context | |
| # (In real implementation, you'd maintain the history but change the context) | |
| js_history = python_history + [ | |
| ChatMessage(role="user", content="Now show me the same in JavaScript"), | |
| ChatMessage(role="assistant", content="function myFunction() { }") | |
| ] | |
| print(f"Conversation now has {len(js_history)} messages with JavaScript context") | |
| print() | |
| def main(): | |
| """Main example function""" | |
| print("🚀 Groq LangChain Integration Service Examples\n") | |
| # Basic usage | |
| client = example_basic_usage() | |
| # Language contexts | |
| example_language_contexts() | |
| # Chat history | |
| chat_history = example_chat_history() | |
| # Message building | |
| example_message_building(client, chat_history) | |
| # Error handling | |
| example_error_handling(client) | |
| # Streaming simulation | |
| example_streaming_simulation() | |
| # Language switching | |
| example_language_switching() | |
| print("✅ All examples completed!") | |
| print("\nTo use with real API calls:") | |
| print("1. Set GROQ_API_KEY environment variable") | |
| print("2. Call client.generate_response() or client.stream_response()") | |
| print("3. Handle responses and errors appropriately") | |
| if __name__ == "__main__": | |
| main() |