Spaces:
Running
Running
| import os | |
| import requests | |
| import gradio as gr | |
| from groq import Groq | |
| def generate_docs(repo_id: str) -> str: | |
| """ | |
| Fetches repository details from GitHub and generates documentation using the Groq API. | |
| """ | |
| # Fetch basic repo info from GitHub | |
| url = f"https://api.github.com/repos/{repo_id}" | |
| response = requests.get(url) | |
| if response.status_code != 200: | |
| return f"Error: Unable to fetch repository details for '{repo_id}'. Please check the repository ID." | |
| repo_data = response.json() | |
| repo_description = repo_data.get("description", "No description provided.") | |
| repo_name = repo_data.get("name", repo_id) | |
| # Construct a prompt that includes some of the repository details. | |
| prompt = ( | |
| f"Generate comprehensive documentation for the GitHub repository '{repo_id}'. " | |
| f"The repository is named '{repo_name}' and its description is: {repo_description}.\n\n" | |
| "Please include sections such as an introduction, installation instructions, usage examples, " | |
| "and any relevant details that would help a new user understand and work with this repository." | |
| ) | |
| # Retrieve the Groq API key from environment variables. | |
| groq_api_key = os.environ.get("GROQ_API_KEY") | |
| if not groq_api_key: | |
| return "Error: GROQ_API_KEY environment variable is not set." | |
| # Initialize the Groq client. | |
| client = Groq(api_key=groq_api_key) | |
| try: | |
| # Call the Groq API with the generated prompt. | |
| chat_completion = client.chat.completions.create( | |
| messages=[ | |
| {"role": "user", "content": prompt} | |
| ], | |
| model="llama-3.3-70b-versatile", | |
| stream=False, | |
| ) | |
| except Exception as e: | |
| return f"Error calling Groq API: {e}" | |
| # Extract and return the generated documentation. | |
| documentation = chat_completion.choices[0].message.content | |
| return documentation | |
| # Define the Gradio Blocks interface. | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# GitHub Repository Documentation Generator") | |
| gr.Markdown( | |
| "Enter a GitHub repository ID (in the format `user/repo`) below. " | |
| "This tool fetches repository details and uses the Groq API to generate documentation." | |
| ) | |
| repo_id_input = gr.Textbox(label="GitHub Repository ID (e.g., user/repo)", placeholder="octocat/Hello-World") | |
| output_box = gr.Textbox(label="Generated Documentation", lines=20) | |
| generate_button = gr.Button("Generate Documentation") | |
| # When the button is clicked, call the generate_docs function. | |
| generate_button.click(fn=generate_docs, inputs=repo_id_input, outputs=output_box) | |
| # Launch the Gradio app. | |
| demo.launch() | |