acecalisto3 commited on
Commit
2ec88b8
·
verified ·
1 Parent(s): 7de5524

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -124
app.py CHANGED
@@ -1,17 +1,14 @@
1
  import gradio as gr
2
- from transformers import pipeline
3
- from sentence_transformers import SentenceTransformer, util
4
- import os
5
  import requests
 
 
6
 
7
- from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
8
-
9
  model_name = "enricoros/big-agi"
10
  tokenizer = AutoTokenizer.from_pretrained(model_name)
11
  model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
12
 
13
-
14
- # Constants for enhanced organization
15
  GITHUB_API_BASE_URL = "https://api.github.com/repos"
16
  DEFAULT_MODEL = "microsoft/CodeBERT-base"
17
  MAX_RELATED_ISSUES = 3
@@ -19,58 +16,32 @@ MAX_RELATED_ISSUES = 3
19
  # Load a pre-trained model for sentence similarity
20
  similarity_model = SentenceTransformer('all-mpnet-base-v2')
21
 
22
- def analyze_issues(issue_text: str, model_name: str, severity: str = None, programming_language: str = None) -> str:
23
- # Initialize the model
24
- model = pipeline("text-generation", model=model_name)
25
-
26
- # Generate a response
27
- response = model(
28
- f"{system_message}\n{issue_text}\nAssistant: ",
29
- max_length=max_tokens,
30
- do_sample=True,
31
- temperature=temperature,
32
- top_k=top_p,
33
- )
34
-
35
- # Extract the assistant's response
36
- assistant_response = response[0]['generated_text'].strip()
37
 
38
- # Analyze the response
39
- if "Severity" in assistant_response:
40
- severity = assistant_response.split(":")[1].strip()
41
 
42
- if "Programming Language" in assistant_response:
43
- programming_language = assistant_response.split(":")[1].strip()
44
-
45
- return {
46
- 'assistant_response': assistant_response,
47
- 'severity': severity,
48
- 'programming_language': programming_language,
49
- }
50
-
51
- def find_related_issues(issue_text: str, issues: list) -> list:
52
- # Calculate the similarity between the issue and other issues
53
  issue_embedding = similarity_model.encode(issue_text)
54
- similarities = [util.cos_sim(issue_embedding, similarity_model.encode(issue['title'])) for issue in issues]
55
-
56
- # Sort the issues by similarity
57
- sorted_issues = sorted(enumerate(similarities), key=lambda x: x[1], reverse=True)
58
-
59
- # Select the top related issues
60
- related_issues = [issues[i] for i, similarity in sorted_issues[:MAX_RELATED_ISSUES]]
61
 
62
- return related_issues
 
63
 
64
- def fetch_github_issues(github_api_token: str, github_username: str, github_repository: str) -> list:
65
- # Fetch the issues from the GitHub API
66
  headers = {'Authorization': f'token {github_api_token}'}
67
  url = f"{GITHUB_API_BASE_URL}/{github_username}/{github_repository}/issues"
68
  response = requests.get(url, headers=headers)
69
-
70
- # Parse the JSON response
71
- issues = response.json()
72
-
73
- return issues
74
 
75
  def respond(
76
  command,
@@ -85,29 +56,11 @@ def respond(
85
  selected_model,
86
  severity,
87
  programming_language,
88
- *args,
89
- **kwargs,
90
- ) -> dict:
91
- # Initialize the model
92
- model = pipeline("text-generation", model="enricoros/big-agi")
93
-
94
- # Generate a response
95
- response = model(
96
- f"{system_message}\n{command}\n{history}\n{github_username}/{github_repository}\n{severity}\n{programming_language}\nAssistant: ",
97
- max_length=max_tokens,
98
- do_sample=True,
99
- temperature=temperature,
100
- top_k=top_p,
101
- )
102
-
103
- # Extract the assistant's response
104
- assistant_response = response[0]['generated_text'].strip()
105
-
106
- return {
107
- 'assistant_response': assistant_response,
108
- 'severity': severity,
109
- 'programming_language': programming_language,
110
- }
111
 
112
  with gr.Blocks() as demo:
113
  with gr.Row():
@@ -115,66 +68,29 @@ with gr.Blocks() as demo:
115
  github_username = gr.Textbox(label="GitHub Username")
116
  github_repository = gr.Textbox(label="GitHub Repository")
117
 
118
- system_message = gr.Textbox(
119
- value="You are GitBot, the Github project guardian angel. You resolve issues and propose implementation of feature requests",
120
- label="System message",
121
- )
122
-
123
- model_dropdown = gr.Dropdown(
124
- choices=[
125
- "microsoft/CodeBERT-base",
126
- "Salesforce/codegen-350M-mono",
127
- ],
128
- label="Select Model for Issue Resolution",
129
- value=DEFAULT_MODEL,
130
- )
131
-
132
- severity_dropdown = gr.Dropdown(
133
- choices=["Critical", "Major", "Minor", "Trivial"],
134
- label="Severity",
135
- value=None,
136
- )
137
-
138
  programming_language_textbox = gr.Textbox(label="Programming Language")
 
139
 
140
- command_dropdown = gr.Dropdown(
141
- choices=[
142
- "/github",
143
- "/help",
144
- "/generate_code",
145
- "/explain_concept",
146
- "/write_documentation",
147
- "/translate_code",
148
- ],
149
- label="Select Command",
150
- )
151
-
152
- chatbot = MyChatbot(
153
- respond,
154
- additional_inputs=[
155
  command_dropdown,
156
  system_message,
157
- gr.Slider(minimum=1, maximum=8192, value=2048, step=1, label="Max new tokens"),
158
- gr.Slider(minimum=0.1, maximum=4.0, value=0.71, step=0.1, label="Temperature"),
159
- gr.Slider(
160
- minimum=0.1,
161
- maximum=1.0,
162
- value=0.95,
163
- step=0.01,
164
- label="Top-p (nucleus sampling)",
165
- ),
166
  github_api_token,
167
  github_username,
168
  github_repository,
169
  model_dropdown,
170
  severity_dropdown,
171
- programming_language_textbox,
172
  ],
 
173
  )
174
 
175
  if __name__ == "__main__":
176
- demo.queue().launch(
177
- share=True,
178
- server_name="0.0.0.0",
179
- server_port=7860
180
- )
 
1
  import gradio as gr
 
 
 
2
  import requests
3
+ from transformers import pipeline, AutoTokenizer, AutoModelForSeq2SeqLM
4
+ from sentence_transformers import SentenceTransformer, util
5
 
6
+ # Initialize models and tokenizers
 
7
  model_name = "enricoros/big-agi"
8
  tokenizer = AutoTokenizer.from_pretrained(model_name)
9
  model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
10
 
11
+ # Constants
 
12
  GITHUB_API_BASE_URL = "https://api.github.com/repos"
13
  DEFAULT_MODEL = "microsoft/CodeBERT-base"
14
  MAX_RELATED_ISSUES = 3
 
16
  # Load a pre-trained model for sentence similarity
17
  similarity_model = SentenceTransformer('all-mpnet-base-v2')
18
 
19
+ def analyze_issues(issue_text: str, model_name: str, severity: str = None, programming_language: str = None):
20
+ # Generate a response using the loaded model
21
+ generator = pipeline("text-generation", model=model, tokenizer=tokenizer)
22
+ response = generator(issue_text, max_length=512, num_return_sequences=1)[0]['generated_text']
 
 
 
 
 
 
 
 
 
 
 
23
 
24
+ return response
 
 
25
 
26
+ def find_related_issues(issue_text: str, issues: list):
 
 
 
 
 
 
 
 
 
 
27
  issue_embedding = similarity_model.encode(issue_text)
28
+ related_issues = []
29
+ for issue in issues:
30
+ title_embedding = similarity_model.encode(issue['title'])
31
+ similarity = util.cos_sim(issue_embedding, title_embedding)[0][0]
32
+ related_issues.append((issue, similarity.item()))
 
 
33
 
34
+ related_issues.sort(key=lambda x: x[1], reverse=True)
35
+ return [issue for issue, _ in related_issues[:MAX_RELATED_ISSUES]]
36
 
37
+ def fetch_github_issues(github_api_token: str, github_username: str, github_repository: str):
 
38
  headers = {'Authorization': f'token {github_api_token}'}
39
  url = f"{GITHUB_API_BASE_URL}/{github_username}/{github_repository}/issues"
40
  response = requests.get(url, headers=headers)
41
+ if response.status_code == 200:
42
+ return response.json()
43
+ else:
44
+ raise Exception(f"Failed to fetch issues: {response.text}")
 
45
 
46
  def respond(
47
  command,
 
56
  selected_model,
57
  severity,
58
  programming_language,
59
+ ):
60
+ # Processing the command and generating a response
61
+ generator = pipeline("text-generation", model=model, tokenizer=tokenizer)
62
+ response = generator(f"{system_message}\n{command}\n{history}", max_length=max_tokens, num_return_sequences=1)[0]['generated_text']
63
+ return response
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  with gr.Blocks() as demo:
66
  with gr.Row():
 
68
  github_username = gr.Textbox(label="GitHub Username")
69
  github_repository = gr.Textbox(label="GitHub Repository")
70
 
71
+ system_message = gr.Textbox(value="You are GitBot, the Github project guardian angel.", label="System message")
72
+ model_dropdown = gr.Dropdown(choices=[DEFAULT_MODEL, "enricoros/big-agi"], label="Select Model for Issue Resolution", value=DEFAULT_MODEL)
73
+ severity_dropdown = gr.Dropdown(choices=["Critical", "Major", "Minor", "Trivial"], label="Severity")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  programming_language_textbox = gr.Textbox(label="Programming Language")
75
+ command_dropdown = gr.Dropdown(choices=["/github", "/help", "/generate_code"], label="Select Command")
76
 
77
+ chatbot = gr.Interface(
78
+ fn=respond,
79
+ inputs=[
 
 
 
 
 
 
 
 
 
 
 
 
80
  command_dropdown,
81
  system_message,
82
+ gr.Slider(minimum=1, maximum=8192, value=2048, label="Max new tokens"),
83
+ gr.Slider(minimum=0.1, maximum=4.0, value=0.71, label="Temperature"),
84
+ gr.Slider(minimum=0.1, maximum=1.0, value=0.95, label="Top-p (nucleus sampling)"),
 
 
 
 
 
 
85
  github_api_token,
86
  github_username,
87
  github_repository,
88
  model_dropdown,
89
  severity_dropdown,
90
+ programming_language_textbox
91
  ],
92
+ outputs="text"
93
  )
94
 
95
  if __name__ == "__main__":
96
+ demo.launch(share=True, server_name="0.0.0.0", server_port=7860)