aryn25 commited on
Commit
93d2930
·
verified ·
1 Parent(s): acda886

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -30
app.py CHANGED
@@ -1,52 +1,50 @@
1
  import gradio as gr
2
  import requests
3
 
 
 
4
  def generate_cover_letter(resume, job_desc):
5
  prompt = f"""
6
- You are a career coach. Write a tailored, ATS-optimized, professional cover letter based on the resume and job description below.
7
 
8
  Resume:
9
  {resume}
10
 
11
  Job Description:
12
  {job_desc}
13
-
14
- The letter should be concise, engaging, and show why the candidate is a good fit.
15
  """
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
  try:
18
- response = requests.post(
19
- "https://piapi.ai/api/deepseek",
20
- headers={"Content-Type": "application/json"},
21
- json={
22
- "prompt": prompt,
23
- "system": "You are a helpful assistant.",
24
- "temperature": 0.8
25
- },
26
- timeout=20 # prevent hanging
27
- )
28
-
29
- # Check if the response body is valid JSON
30
  if response.status_code == 200:
31
- try:
32
- data = response.json()
33
- return data.get("response", "⚠️ API responded but didn't return any text.")
34
- except Exception as e:
35
- return f"❌ JSON decode failed — maybe HTML or empty: {str(e)}\nRaw response:\n{response.text}"
36
  else:
37
- return f"❌ API returned error code {response.status_code}:\n{response.text}"
38
-
39
- except requests.exceptions.RequestException as e:
40
- return f"❌ Request failed:\n{str(e)}"
41
 
42
  # Gradio UI
43
- gr.Interface(
44
  fn=generate_cover_letter,
45
  inputs=[
46
- gr.Textbox(label="Paste Your Resume", lines=12, placeholder="Paste your resume here..."),
47
- gr.Textbox(label="Paste Job Description", lines=10, placeholder="Paste the job description here...")
48
  ],
49
  outputs=gr.Textbox(label="Generated Cover Letter"),
50
- title="AI Cover Letter Generator (DeepSeek LLM)",
51
- description="Paste your resume and job description. Click 'Submit' to generate a personalized, professional cover letter using DeepSeek via PiAPI (no key needed)."
52
- ).launch()
 
 
 
1
  import gradio as gr
2
  import requests
3
 
4
+ API_URL = "https://openrouter.ai/api/v1/chat/completions"
5
+
6
  def generate_cover_letter(resume, job_desc):
7
  prompt = f"""
8
+ You are a career expert. Write a personalized, ATS-friendly cover letter for this resume and job description.
9
 
10
  Resume:
11
  {resume}
12
 
13
  Job Description:
14
  {job_desc}
 
 
15
  """
16
+
17
+ headers = {
18
+ "Content-Type": "application/json"
19
+ # No API key required for free models
20
+ }
21
+
22
+ data = {
23
+ "model": "meta-llama/llama-4-maverick:free",
24
+ "messages": [
25
+ {"role": "user", "content": prompt}
26
+ ]
27
+ }
28
 
29
  try:
30
+ response = requests.post(API_URL, headers=headers, json=data)
 
 
 
 
 
 
 
 
 
 
 
31
  if response.status_code == 200:
32
+ return response.json()["choices"][0]["message"]["content"]
 
 
 
 
33
  else:
34
+ return f"❌ API Error {response.status_code}: {response.text}"
35
+ except Exception as e:
36
+ return f"❌ Failed to connect to OpenRouter: {str(e)}"
 
37
 
38
  # Gradio UI
39
+ demo = gr.Interface(
40
  fn=generate_cover_letter,
41
  inputs=[
42
+ gr.Textbox(lines=12, label="Paste Your Resume"),
43
+ gr.Textbox(lines=10, label="Paste Job Description")
44
  ],
45
  outputs=gr.Textbox(label="Generated Cover Letter"),
46
+ title="AI Cover Letter Generator",
47
+ description="No API key needed powered by LLaMA 4 Maverick (free via OpenRouter). Just paste your resume and job description to get a tailored cover letter."
48
+ )
49
+
50
+ demo.launch()