import os from dotenv import load_dotenv from openai import OpenAI import anthropic # Load environment variables from .env file load_dotenv() client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("https://api.aimlapi.com"), ) # Initialize the Anthropic client anthropic_client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) # Function to get GPT-4o Mini response def get_code_review_response(prompt, max_tokens=1000): try: response = anthropic_client.messages.create( model="claude-3-5-sonnet-20240620", max_tokens=1024, messages=[ { "role": "user", "content": f"You are an AI assistant who helps users in code reviews by deep thinking in points max 5-6 point shortly:\n{prompt}", }, ], ) # Extract feedback text from the response review = response.text if hasattr(response, "text") else str(response) # Check if feedback is a Message object and extract text if necessary if hasattr(response, "content") and isinstance(response.content, list): review = "\n\n".join( [ text_block.text for text_block in response.content if hasattr(text_block, "text") ] ) return review except Exception as e: return "Sorry, an error occurred while generating your idea. Please try again later." # Function to refactor code def refactor_code(code_snippet): try: response = anthropic_client.messages.create( model="claude-3-5-sonnet-20240620", max_tokens=1024, messages=[ { "role": "user", "content": f"Refactor the following code. Do not provide any explanation or comments, just return the refactored code:\n{code_snippet}", }, ], ) # Check if feedback is a Message object and extract text if necessary if hasattr(response, "content") and isinstance(response.content, list): # Join the text blocks into a single string with line breaks refactor = "\n".join( [text_block.text for text_block in response.content if hasattr(text_block, "text")] ) else: refactor = response.text if hasattr(response, "text") else str(response) # Return the formatted string, ensuring it maintains line breaks return refactor.strip() except Exception as e: return "Sorry, an error occurred while refactoring your code. Please try again later." # Function to get feedback on code using Anthropic def code_feedback(code_snippet): try: response = anthropic_client.messages.create( model="claude-3-5-sonnet-20240620", max_tokens=1024, messages=[ { "role": "user", "content": f"Please provide feedback on the given code, don't refactor the code:\n{code_snippet}", }, ], ) # Extract feedback text from the response feedback = response.text if hasattr(response, "text") else str(response) # Check if feedback is a Message object and extract text if necessary if hasattr(response, "content") and isinstance(response.content, list): feedback = "\n\n".join( [ text_block.text for text_block in response.content if hasattr(text_block, "text") ] ) return feedback except Exception as e: return "Sorry, an error occurred while getting feedback on your code. Please try again later." # Function to suggest best coding practices based on given code def suggest_best_practices(code_snippet): try: response = anthropic_client.messages.create( model="claude-3-5-sonnet-20240620", max_tokens=1024, messages=[ { "role": "user", "content": ( f"Based on the following code, suggest best practices max 5-6 point shortly" f"for coding patterns that align with industry standards: \n{code_snippet}" ), }, ], ) # Extract suggestions from the response best_practices = response.text if hasattr(response, "text") else str(response) # Check if the feedback is a Message object and extract text if necessary if hasattr(response, "content") and isinstance(response.content, list): best_practices = "\n\n".join( [ text_block.text for text_block in response.content if hasattr(text_block, "text") ] ) return best_practices except Exception as e: return "Sorry, an error occurred while suggesting best practices. Please try again later." # Function to remove code errors def remove_code_errors(code_snippet): try: response = anthropic_client.messages.create( model="claude-3-5-sonnet-20240620", max_tokens=1024, messages=[ { "role": "user", "content": f"Identify and suggest fixes for errors in the following code:\n{code_snippet}", }, ], ) code_errors = response.text if hasattr(response, "text") else str(response) # Check if feedback is a Message object and extract text if necessary if hasattr(response, "content") and isinstance(response.content, list): code_errors = "\n\n".join( [ text_block.text for text_block in response.content if hasattr(text_block, "text") ] ) return code_errors except Exception as e: return "Sorry, an error occurred while removing code errors. Please try again later."