outer-loop-chrome-extension/main.py (53 lines of code) (raw):

import os import json import functions_framework import google.cloud.logging import vertexai from vertexai.language_models import TextGenerationModel PROJECT_ID = os.environ.get('GCP_PROJECT', '-') LOCATION = os.environ.get('GCP_REGION', '-') client = google.cloud.logging.Client(project=PROJECT_ID) client.setup_logging() log_name = "devai-cloudfunction-log" logger = client.logger(log_name) @functions_framework.http def devai(request): logger.log(f"Received a request for Code Review") # Parse the request body request_json = request.get_json(silent=True) # Extract the data from the request body if request_json and 'data' in request_json: user_data = request_json['data'] logger.log(f"Received data from user: {user_data}") else: user_data = "NO SOURCE PROVIDED" logger.log(user_data) vertexai.init(project=PROJECT_ID, location=LOCATION) model = TextGenerationModel.from_pretrained("text-bison") prompt = f''' You are and expert software developer reviewing code. Review the code below and provide a review in HTML format. EXAMPLE INPUT:def average(x, y): return x - y result = average(a, b) print(f"The average of a and b is: result") EXAMPLE OUTPUT: <h1>Code Review</h1> <ul> <li>The code is poorly formatted. <li>The code is incorrect. The `average()` function should return the average of the two numbers, not the difference. <li>The code is inefficient. The `average()` function can be written more efficiently using the following code: ``` def average(x, y): return (x + y) / 2 ``` </ul> Review the following code twice and respond with any suggestions or better code examples: {user_data} ''' parameters = { "temperature": 1.0, "max_output_tokens": 256, "top_p": 1.0, "top_k": 40 } prompt_response = model.predict(prompt, **parameters) clean_response = prompt_response.text.replace( "```html", "").replace("```", "") logger.log("PaLM Text Bison Model response: {clean_response}") # Format the response data = {} data['data'] = [] data['data'].append({"details": clean_response}) return json.dumps(data), 200, {'Content-Type': 'application/json'}