ajitesh123 / auto-review-ai

๐Ÿš€ AI-Powered Performance Review Generator
https://perfor-ai.streamlit.app/
3 stars 1 forks source link

Add Audio Input for Performance and Self-Reviews #55

Closed archie-ai-code-explain-pr-review[bot] closed 1 month ago

archie-ai-code-explain-pr-review[bot] commented 4 months ago
greptile-apps[bot] commented 4 months ago

Implementation Steps

  1. Update ReviewRequest and SelfReviewRequest Models:
# In review.py and self_review.py
class ReviewRequest(BaseModel):
    your_role: str
    candidate_role: str
    perf_question: Optional[str] = None
    your_review: str
    audio_review: Optional[str] = None  # Add this line
    llm_type: str
    user_api_key: str
    model_size: str = "small"

class SelfReviewRequest(BaseModel):
    text_dump: str
    questions: List[str]
    instructions: Optional[str] = None
    audio_review: Optional[str] = None  # Add this line
    llm_type: str
    user_api_key: str
    model_size: str = "medium"
  1. Add Audio Recorder in Streamlit App:
# In app.py
from streamlit_audio_recorder import audio_recorder

# Inside the Performance Review section
st.title("Write Performance Review in a Minute")
audio_review = audio_recorder()

# Inside the Self-Review section
st.title("Generate Your Self-Review")
audio_review = audio_recorder()
  1. Implement convert_speech_to_text Function:
# In llm.py
from groq import Whisper

def convert_speech_to_text(audio_data: str, api_key: str) -> str:
    whisper = Whisper(api_key=api_key)
    text = whisper.transcribe(audio_data)
    return text
  1. Update Review Generation Logic:
# In app.py
if st.button('Generate Performance Review'):
    if not user_api_key:
        st.error("Please enter your API key in the sidebar.")
    elif not your_role or not candidate_role or not your_review:
        st.error("Please fill in all required fields.")
    else:
        try:
            if audio_review:
                your_review = convert_speech_to_text(audio_review, user_api_key)
            questions = perf_question.split('\n') if perf_question else DEFAULT_QUESTIONS.split('\n')
            review_request = ReviewRequest(
                your_role=your_role,
                candidate_role=candidate_role,
                perf_question="\n".join(questions),
                your_review=your_review,
                audio_review=audio_review,
                llm_type=llm_type,
                user_api_key=user_api_key,
                model_size=model_size
            )
            review = generate_review(**review_request.model_dump())
            for qa in review:
                st.markdown(f"**{qa['question']}**")
                st.markdown(qa['answer'])
                st.markdown("---")
        except Exception as e:
            st.error(f"An error occurred: {str(e)}")

if st.button('Generate Self-Review'):
    if not user_api_key:
        st.error("Please enter your API key in the sidebar.")
    elif not text_dump or not questions:
        st.error("Please provide both the text dump and questions.")
    else:
        try:
            if audio_review:
                text_dump = convert_speech_to_text(audio_review, user_api_key)
            question_list = [q.strip() for q in questions.split('\n') if q.strip()]
            self_review_request = SelfReviewRequest(
                text_dump=text_dump,
                questions=question_list,
                instructions=instructions if instructions else None,
                audio_review=audio_review,
                llm_type=llm_type,
                user_api_key=user_api_key,
                model_size=model_size
            )
            self_review = generate_self_review(**self_review_request.model_dump())
            for qa in self_review:
                st.markdown(f"**{qa['question']}**")
                st.markdown(qa['answer'])
                st.markdown("---")
        except Exception as e:
            st.error(f"An error occurred: {str(e)}")

References

/app.py /self_review.py /review.py /llm.py

#### About Greptile This response provides a starting point for your research, not a precise solution. Help us improve! Please leave a ๐Ÿ‘ if this is helpful and ๐Ÿ‘Ž if it is irrelevant. [Ask Greptile](https://app.greptile.com/chat/github/ajitesh123/perf-review-ai/main) ยท [Edit Issue Bot Settings](https://app.greptile.com/apps/github)