Update app.py
Browse files
app.py
CHANGED
@@ -3,6 +3,7 @@ import google.generativeai as genai
|
|
3 |
import requests
|
4 |
import base64
|
5 |
import json
|
|
|
6 |
|
7 |
def fetch_github_files(github_url, personal_access_token):
|
8 |
try:
|
@@ -59,10 +60,16 @@ def fetch_github_files(github_url, personal_access_token):
|
|
59 |
except json.JSONDecodeError:
|
60 |
return f"Error: Unable to parse GitHub API response for {file_path}"
|
61 |
|
|
|
62 |
def process_with_gemini(file_content, gemini_api_key):
|
63 |
genai.configure(api_key=gemini_api_key)
|
64 |
model = genai.GenerativeModel('gemini-2.5-pro-preview-03-25')
|
65 |
|
|
|
|
|
|
|
|
|
|
|
66 |
prompt = f"""
|
67 |
Analyze the following file content for open-source license information:
|
68 |
|
@@ -76,8 +83,12 @@ def process_with_gemini(file_content, gemini_api_key):
|
|
76 |
5. Provide no other information such as greeting or summary as the purpose is to catalog and document all open source licenses used.
|
77 |
"""
|
78 |
|
79 |
-
|
80 |
-
|
|
|
|
|
|
|
|
|
81 |
|
82 |
def process_input(github_url, personal_access_token, gemini_api_key):
|
83 |
if not github_url.startswith("https://github.com/"):
|
|
|
3 |
import requests
|
4 |
import base64
|
5 |
import json
|
6 |
+
from tenacity import retry, stop_after_attempt, wait_exponential
|
7 |
|
8 |
def fetch_github_files(github_url, personal_access_token):
|
9 |
try:
|
|
|
60 |
except json.JSONDecodeError:
|
61 |
return f"Error: Unable to parse GitHub API response for {file_path}"
|
62 |
|
63 |
+
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
|
64 |
def process_with_gemini(file_content, gemini_api_key):
|
65 |
genai.configure(api_key=gemini_api_key)
|
66 |
model = genai.GenerativeModel('gemini-2.5-pro-preview-03-25')
|
67 |
|
68 |
+
# Limit content size (adjust the limit as needed)
|
69 |
+
max_content_length = 10000 # characters
|
70 |
+
if len(file_content) > max_content_length:
|
71 |
+
file_content = file_content[:max_content_length] + "..."
|
72 |
+
|
73 |
prompt = f"""
|
74 |
Analyze the following file content for open-source license information:
|
75 |
|
|
|
83 |
5. Provide no other information such as greeting or summary as the purpose is to catalog and document all open source licenses used.
|
84 |
"""
|
85 |
|
86 |
+
try:
|
87 |
+
response = model.generate_content(prompt, timeout=60) # Set a timeout of 60 seconds
|
88 |
+
return response.text
|
89 |
+
except Exception as e:
|
90 |
+
print(f"Error in Gemini API call: {str(e)}")
|
91 |
+
raise # This will trigger a retry
|
92 |
|
93 |
def process_input(github_url, personal_access_token, gemini_api_key):
|
94 |
if not github_url.startswith("https://github.com/"):
|