Spaces:
Sleeping
Sleeping
| 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." | |