File size: 2,844 Bytes
890ed5a
 
 
 
 
 
 
 
 
9de40ea
890ed5a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
86
87
88
89
90
91
92
# -*- coding: utf-8 -*-
"""Copy of Code Reviewer.ipynb

Automatically generated by Colaboratory.

Original file is located at
    https://colab.research.google.com/drive/1FzNbYw4i5ZFSKsnc7p9qygg8ks_mfQY0
"""



#@title Code Explainer
import gradio as gr
import os
import google.generativeai as palm

# load model
# PaLM API Key here
palm.configure(api_key='AIzaSyDA0uqrEshIOwKv69DLRWz2QXq8lb8SvLA')
# Use the palm.list_models function to find available models
# PaLM 2 available in 4 sizes: Gecko, Otter, Bison and Unicorn (largest)
models = [m for m in palm.list_models() if 'generateText' in m.supported_generation_methods]
model = models[0].name

# define completion function

def get_completion(code_snippet):

  python_code_examples = f"""
  ---------------------
  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.
   Your feedback should be constructive and aim to enhance the overall quality and maintainability of the code.
   Please avoid providing explanations for your suggestions unless specifically requested. Instead, focus on clearly identifying areas for improvement and suggesting alternative approaches or solutions.
   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,
      # The maximum length of the response
      max_output_tokens=500,
      )
  response = completion.result
  return response

# define app UI
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()