File size: 2,544 Bytes
890ed5a
374821f
890ed5a
 
 
 
 
374821f
890ed5a
 
374821f
 
890ed5a
374821f
 
 
890ed5a
374821f
 
890ed5a
374821f
 
890ed5a
374821f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
890ed5a
 
 
374821f
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# -*- 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()