talha13213's picture
code
41e1fb9
Raw
History Blame Contribute Delete
4.02 kB
import os
from openai import OpenAI
import gradio as gr
import anthropic
from dotenv import load_dotenv
load_dotenv(override=True)
openai_api_key = os.getenv('OPENAI_API_KEY')
anthropic_api_key = os.getenv('ANTHROPIC_API_KEY')
if openai_api_key:
print(f"OpenAI API Key exists and begins {openai_api_key[:8]}")
else:
print("OpenAI API Key not set")
if anthropic_api_key:
print(f"Anthropic API Key exists and begins {anthropic_api_key[:7]}")
else:
print("Anthropic API Key not set")
MODEL = "gpt-4o-mini"
openai = OpenAI()
CLAUDE_MODEL='claude-3-7-sonnet-latest'
claude= anthropic.Anthropic()
system_message = """
You are a Python expert assistant.
Your job is to add a clean, detailed, and professional Python docstring to a given function.
The docstring should:
- Start with a one-line summary of what the function does.
- Include an `Args:` section listing all parameters with type and description.
- Include a `Returns:` section describing the return value with type.
- Follow proper indentation and formatting standards (PEP 257 style).
- Do not modify the function body.
- Do not explain or comment — just return the updated function with the docstring inserted.
Example:
Input:
def multiply(a, b):
return a * b
Output:
def multiply(a, b):
\"\"\"
Multiply two numbers.
Args:
a (int): The first number.
b (int): The second number.
Returns:
int: The product of a and b.
\"\"\"
return a * b
"""
system_message_unittest = """
You are a Python testing assistant.
Your job is to generate clean, correct, and complete unit tests for the given Python function(s) using the built-in `unittest` framework.
Your output should:
- Import the function if needed (assume it's in the same file)
- Use a test class that inherits from `unittest.TestCase`
- Include 2 to 4 relevant test cases using `.assertEqual`, `.assertTrue`, or `.assertFalse`
- Cover edge cases (e.g. empty inputs, zero, negative, large numbers)
- Not explain the code — just return the full Python code block with the unit tests
Example:
Input:
def is_even(n):
return n % 2 == 0
Output:
import unittest
class TestIsEven(unittest.TestCase):
def test_even(self):
self.assertTrue(is_even(4))
self.assertTrue(is_even(0))
def test_odd(self):
self.assertFalse(is_even(3))
if __name__ == "__main__":
unittest.main()
"""
def userPrompt(code):
userPrompt=code
return userPrompt
def generator(code, mode):
response = ""
if mode == "docstring":
response = openai.chat.completions.create(
model=MODEL,
messages=[
{"role":"system","content":system_message},
{"role":"user","content":userPrompt(code)}
]
)
elif mode == "unit_test":
response = openai.chat.completions.create(
model=MODEL,
messages=[
{"role":"system","content":system_message_unittest},
{"role":"user","content":userPrompt(code)}
]
)
gpt_output = response.choices[0].message.content
# Remove triple backticks and 'python' label
if gpt_output.startswith("```python"):
gpt_output = gpt_output.replace("```python", "").strip()
if gpt_output.endswith("```"):
gpt_output = gpt_output[:-3].strip()
# Unescape \n and convert to real line breaks
cleaned = gpt_output.encode().decode('unicode_escape')
return cleaned.strip()
interface = gr.Interface(
fn=generator,
inputs=[
gr.Textbox(lines=12, label="Paste your Python function here"),
gr.Dropdown(choices=["docstring", "unit_test"], label="Select Mode", value="docstring")
],
outputs=gr.Code(label="Output", language="python"),
title="🧠 Python Docstring and Unit Test Generator",
description="Paste your Python function and select the mode to generate a docstring or a unit test automatically."
)
if __name__ == "__main__":
interface.launch()