CodeMentor / openai_client.py
harris1's picture
Update openai_client.py
11e9350 verified
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."