GPT4Readability / app.py
JohanDL's picture
update app
dc562c3 verified
raw
history blame
3.77 kB
import gradio as gr
import os
import subprocess
import shutil
import openai
css_style = """
.gradio-container {
font-family: "IBM Plex Mono";
}
"""
def process_repository(url, model):
# Split the URL to get the repo name
repo_name = url.split('/')[-1]
if repo_name.endswith('.git'):
repo_name = repo_name[:-4]
# Change permissions
subprocess.run(['chmod', 'u+w', '.'])
# Clone the repo
subprocess.run(['git', 'clone', url], check=True)
try:
# Change directory to the cloned repo
os.chdir(repo_name)
# Run your package command
subprocess.run(['gpt4readability', '.', '--function', 'readme','--include-md', 'false', '--model', model])
# Open the README.md file and return its contents
with open('README.md', 'r') as readme_file:
readme_contents = readme_file.read()
return readme_contents
finally:
# Change back to the original directory
os.chdir('..')
# Delete the repo directory
if os.path.exists(repo_name):
shutil.rmtree(repo_name)
def generate_repo(url, api_key, model):
if api_key:
os.environ['OPENAI_API_KEY'] = api_key.strip()
# if model == 'gpt-4':
# try:
# response = openai.Completion.create(
# model="gpt-4", # or whatever the exact model ID is
# prompt="test",
# max_tokens=5
# )
# print("Access to GPT-4 confirmed!")
# except:
# return "The API key either does not have access to GPT-4 or is not valid."
return process_repository(url, model)
else:
return "Please add a valid OpenAI API Key (you can get them [here](https://platform.openai.com/account/api-keys))"
with gr.Blocks(css=css_style) as demo:
gr.Markdown(f"""
# Hello from GPT4Readability (v0.1.3)
*Project by Dennis Loevlie ([@DennisLoevlie](https://twitter.com/DennisLoevlie))*
[![License Badge](https://img.shields.io/github/license/loevlie/GPT4Readability)](https://github.com/loevlie/GPT4Readability/blob/main/LICENSE)
Welcome to GPT4Readability, a tool designed to help you generate README.md files and suggest improvements for your code repositories.
- You can find the source code at [GPT4Readability](https://github.com/loevlie/GPT4Readability).
- It's making use of the [langchain](https://github.com/hwchase17/langchain) library.
## Here's how to get started:
1. Please enter your API Key ([Need more information?](https://platform.openai.com/account/api-keys))
2. Provide the GitHub Repository URL that you'd like to analyze
3. Select a model (Please note, the gpt-4 API isn't available to all as of July 2023)
4. Click to generate a README or suggestions markdown file
""")
openai_api_key = gr.Textbox(
label="OpenAI API Key", placeholder="sk-...", type="password"
)
url = gr.Textbox(label="GitHub Repository URL")
model = gr.Dropdown(["gpt-3.5-turbo", "gpt-4"], type="value", label='Model Type')
btn = gr.Button("Generate README.md")
output_md = gr.Markdown()
output_text = gr.Text()
def update_output(url, api_key, model):
content = generate_repo(url, api_key, model)
output_md.update(value=content)
output_text.update(value=content)
btn.click(fn=update_output, inputs=[url, openai_api_key, model], outputs=[])
with gr.Tabs() as tabs:
with gr.TabItem("Rendered Markdown"):
output_md
with gr.TabItem("Plain Markdown"):
output_text
demo.queue(concurrency_count=20)
demo.launch(share=False)