| import os |
| from groq import Groq |
| import streamlit as st |
| from dotenv import load_dotenv |
|
|
| |
| load_dotenv() |
| api_key = os.getenv("GROQ_API_KEY") |
|
|
| |
| client = Groq(api_key=api_key) |
|
|
| |
| developer_topics = [ |
| "best programming languages", "web development frameworks", "version control with Git", |
| "debugging tips", "data structures and algorithms", "object-oriented programming", |
| "functional programming", "software design patterns", "API design and development", |
| "devops practices", "cloud computing", "front-end development", "back-end development", |
| "machine learning", "deep learning", "software testing and QA", "agile methodologies", |
| "CI/CD pipelines", "database design", "programming best practices", "security in development", |
| "mobile app development", "project management for developers", "open source contribution", |
| "developer tools and IDEs", "documentation and code commenting", "coding interview preparation" |
| ] |
|
|
| |
| def get_response(query): |
| completion = client.chat.completions.create( |
| model="llama-3.3-70b-versatile", |
| messages=[{"role": "user", "content": query}], |
| temperature=0.7, |
| max_completion_tokens=2024, |
| top_p=1, |
| ) |
| response = completion.choices[0].message.content |
| return response |
|
|
| def main(): |
| st.title("Programming Developer Advisor Chatbot") |
|
|
| |
| topic = st.selectbox("Choose a programming topic", developer_topics) |
| user_input = st.text_area("Or ask a programming-related question:", "") |
|
|
| |
| submit_button = st.button("Submit") |
|
|
| |
| if submit_button: |
| if user_input: |
| query = user_input |
| |
| if any(topic.lower() in user_input.lower() for topic in developer_topics): |
| response = get_response(query) |
| st.write("### Response:") |
| st.write(response) |
| else: |
| st.write("Sorry, I can only answer programming-related questions.") |
| else: |
| st.write("Please enter a programming-related question or choose a topic.") |
|
|
| if __name__ == "__main__": |
| main() |
|
|