import gradio as gr from groq import Groq import os client = Groq(api_key=os.environ.get("GROQ_API_KEY")) SYSTEM_PROMPT = """ You are a Senior Software Testing Assistant for testers worldwide. You help with: - Manual testing concepts - Writing clear and effective test cases - Bug reporting and reproduction steps - API testing (Postman, REST, status codes) - Test automation concepts and tools - Test strategies, test plans, and best practices Always respond in a clear, structured, and professional way. Provide examples when possible. """ def respond(message, history, model, temperature, max_tokens): messages = [{"role": "system", "content": SYSTEM_PROMPT}] for h in history: messages.append({"role": "user", "content": h[0]}) if h[1]: messages.append({"role": "assistant", "content": h[1]}) messages.append({"role": "user", "content": message}) try: response = client.chat.completions.create( model=model, messages=messages, temperature=temperature, max_completion_tokens=max_tokens, ) return response.choices[0].message.content except Exception as e: return f"Error: {str(e)}" # ChatInterface with additional inputs for parameters demo = gr.ChatInterface( fn=respond, title="Global Software Testing Assistant", description="Your AI assistant for manual testing, automation, API testing, and QA best practices.", additional_inputs=[ gr.Dropdown( choices=[ "llama-3.3-70b-versatile", "llama-3.1-8b-instant", ], value="llama-3.3-70b-versatile", label="Model", info="Select the AI model to use" ), gr.Slider( minimum=0, maximum=2, value=0.9, step=0.1, label="Temperature", info="Controls randomness. Lower = more focused, Higher = more creative" ), gr.Slider( minimum=256, maximum=8192, value=2048, step=256, label="Max Tokens", info="Maximum length of the response" ), ], examples=[ ["Write test cases for a specific scenario"], ["How to report a bug professionally?"], ["Explain API testing with Postman"], ], theme="soft", ) if __name__ == "__main__": demo.launch()