Generate a Python package structure and content using Groq or GEMINI models.
(package_name: str, package_description: str, features: Optional[List[str]], api_provider: str, api_key: str, model_name: str)
| 146 | return package_description |
| 147 | |
| 148 | def generate_python_package(package_name: str, package_description: str, features: Optional[List[str]], api_provider: str, api_key: str, model_name: str) -> Optional[Dict[str, str]]: |
| 149 | """Generate a Python package structure and content using Groq or GEMINI models.""" |
| 150 | if not api_key: |
| 151 | st.error("🔑 API key is required.") |
| 152 | return None |
| 153 | |
| 154 | if api_provider == "GEMINI": |
| 155 | try: |
| 156 | # genai.configure(api_key=api_key) # Uncomment if using GEMINI |
| 157 | # model = genai.GenerativeModel(model_name) # Uncomment if using GEMINI |
| 158 | client = None # No Groq client |
| 159 | st.error("GEMINI API integration is currently not implemented.") |
| 160 | return None |
| 161 | except Exception as e: |
| 162 | st.error(f"⚠️ Error initializing GEMINI model: {e}") |
| 163 | return None |
| 164 | elif api_provider == "Groq": |
| 165 | try: |
| 166 | client = Groq(api_key=api_key) |
| 167 | model = None # No GEMINI model |
| 168 | except Exception as e: |
| 169 | st.error(f"⚠️ Error initializing Groq client: {e}") |
| 170 | return None |
| 171 | else: |
| 172 | st.error("⚠️ Invalid API provider selected.") |
| 173 | return None |
| 174 | |
| 175 | # Enhance package description if using Groq |
| 176 | if api_provider == "Groq": |
| 177 | st.info("Enhancing package description...") |
| 178 | package_description = enhance_package_description(client, model_name, package_description) |
| 179 | # Generate detailed feature descriptions |
| 180 | if features: |
| 181 | st.info("Generating detailed feature descriptions...") |
| 182 | feature_descriptions = generate_feature_descriptions(client, model_name, features) |
| 183 | # Use the enhanced feature descriptions |
| 184 | features_formatted = "" |
| 185 | for feature in features: |
| 186 | description = feature_descriptions.get(feature, "") |
| 187 | features_formatted += f"- {feature.strip()}:\n{description}\n" |
| 188 | else: |
| 189 | features_formatted = "" |
| 190 | else: |
| 191 | # For GEMINI, use the original descriptions |
| 192 | # Format the features as a bulleted list |
| 193 | if features: |
| 194 | features_formatted = "\n".join(f"- {feature.strip()}" for feature in features if feature.strip()) |
| 195 | else: |
| 196 | features_formatted = "" |
| 197 | |
| 198 | features_section = "" |
| 199 | if features_formatted: |
| 200 | features_section = f"\n\nInclude the following features with detailed descriptions:\n{features_formatted}\nFor each feature, generate the following files:\n- {package_name}/{{feature_lower}}.py\n- examples/example_{{feature_lower}}.py\n- tests/test_{{feature_lower}}.py" |
| 201 | |
| 202 | # Updated prompt with explicit instructions |
| 203 | prompt = f""" |
| 204 | You are to generate the structure and content of a Python package named `{package_name}` based on the following description, Also remember to be verbose like you're life depends on it, : |
| 205 | {package_description}{features_section} |
no test coverage detected