codereviwer / app.py
sakethsai67's picture
Update app.py
374821f verified
# -*- coding: utf-8 -*-
"""Code Reviewer App using Google PaLM"""
import gradio as gr
import os
import google.generativeai as palm
# Configure the PaLM API Key
palm.configure(api_key='AIzaSyDA0uqrEshIOwKv69DLRWz2QXq8lb8SvLA')
# List and filter models
models = [m for m in palm.list_models() if 'generateText' in m.supported_generation_methods]
# Check if models list is not empty
if not models:
raise Exception("No models found that support 'generateText'. Please check your API key or access rights.")
# Use the first available model
model = models[0].name
# Define the function to get a code review
def get_completion(code_snippet):
python_code_examples = """
---------------------
Example 1: Code Snippet
def calculate_average(numbers):
total = 0
for number in numbers:
total += number
average = total / len(numbers)
return average
Code Review: Consider using the sum() function to calculate the total sum of the numbers
instead of manually iterating over the list. This would make the code more concise and efficient.
---------------------
Example 2: Code Snippet
def find_largest_number(numbers):
largest_number = numbers[0]
for number in numbers:
if number > largest_number:
largest_number = number
return largest_number
Code Review: Refactor the code using the max() function to find the largest number in the list.
This would simplify the code and improve its readability.
---------------------
"""
prompt = f"""
I will provide you with code snippets,
and you will review them for potential issues and suggest improvements.
Please focus on providing concise and actionable feedback, highlighting areas
that could benefit from refactoring, optimization, or bug fixes.
Avoid explanations unless specifically requested.
Few good examples of Python code output between #### separator:
####
{python_code_examples}
####
Code Snippet is shared below, delimited with triple backticks:
```
{code_snippet}
```
"""
completion = palm.generate_text(
model=model,
prompt=prompt,
temperature=0,
max_output_tokens=500,
)
return completion.result
# Define Gradio Interface
iface = gr.Interface(
fn=get_completion,
inputs=[gr.Textbox(label="Insert Code Snippet", lines=5)],
outputs=[gr.Textbox(label="Review Here", lines=8)],
title="Code Reviewer"
)
iface.launch()