aazizisoufiane commited on
Commit
f0bc773
·
1 Parent(s): c415c60

add more llms

Browse files
Files changed (2) hide show
  1. app.py +43 -6
  2. summarization_service/summarizer.py +10 -9
app.py CHANGED
@@ -18,6 +18,9 @@ st.set_page_config(page_title="Summary", layout="wide")
18
 
19
  # Initialize chat history
20
  chat_history = []
 
 
 
21
 
22
  logger.info(f"Build retriever")
23
 
@@ -29,8 +32,8 @@ def generate_response(prompt_input):
29
 
30
 
31
  @st.cache_resource()
32
- def factory_transcript(video_id, model):
33
- ts = TranscriptSummary(doc_id=video_id, model=model)
34
  logger.info("TranscriptSummary initialized")
35
  return ts
36
 
@@ -64,11 +67,38 @@ with st.sidebar:
64
 
65
  similarity_top_k = st.number_input("Maximum Number of Results to Display", min_value=1, max_value=100, value=10)
66
 
67
- chosen_LLM = st.selectbox("Choose Language Model", ["gpt-3.5-turbo", "default"])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  api_key = st.text_input("OpenAI API Key", type="password")
69
 
70
- if api_key:
71
- openai.api_key = api_key
 
 
 
 
 
 
 
 
72
 
73
  if youtube_url or uploaded_video:
74
  video_file_path = os.path.join(output_path_video, f"{video_loader.video_id}.mp3")
@@ -84,7 +114,7 @@ if youtube_url or uploaded_video:
84
  logger.info(f"Transcription already exists: {transcription_file_path}")
85
 
86
  video_retriever = factory_video(video_loader.video_id, top_k=int(similarity_top_k))
87
- transcript_summary = factory_transcript(video_loader.video_id, model=chosen_LLM)
88
 
89
  docs = load_transcription(video_loader, output_path_transcription)
90
 
@@ -144,10 +174,17 @@ if youtube_url or uploaded_video:
144
  del st.session_state.generated[:]
145
 
146
 
 
 
 
 
 
 
147
  def on_input_change():
148
  user_input = st.session_state.user_input
149
  st.session_state.past.append(user_input)
150
  st.session_state.generated.append("The messages from Bot\nWith new line")
 
151
 
152
 
153
  if 'generated' not in st.session_state:
 
18
 
19
  # Initialize chat history
20
  chat_history = []
21
+ # Initialize variables for LLM options and chosen LLM
22
+ llm_options = []
23
+ chosen_LLM = "default"
24
 
25
  logger.info(f"Build retriever")
26
 
 
32
 
33
 
34
  @st.cache_resource()
35
+ def factory_transcript(video_id, model, llm_provider):
36
+ ts = TranscriptSummary(doc_id=video_id, model=model, llm_provider=llm_provider)
37
  logger.info("TranscriptSummary initialized")
38
  return ts
39
 
 
67
 
68
  similarity_top_k = st.number_input("Maximum Number of Results to Display", min_value=1, max_value=100, value=10)
69
 
70
+ # Selecting the provider
71
+ chosen_provider = st.selectbox("Choose Provider", ["OpenAI", "Replicate", "Default"])
72
+
73
+ # Based on provider, display relevant LLMs
74
+ if chosen_provider == "OpenAI":
75
+ llm_options = ["gpt-3.5-turbo-0301", "gpt-3.5-turbo-16k", "gpt-4", "gpt-4-32k-0314"]
76
+ elif chosen_provider == "Replicate":
77
+ llm_options = ["mistralai/mistral-7b-v0.1:3e8a0fb6d7812ce30701ba597e5080689bef8a013e5c6a724fafb108cc2426a0",
78
+ "mistralai/mistral-7b-instruct-v0.1:83b6a56e7c828e667f21fd596c338fd4f0039b46bcfa18d973e8e70e455fda70",
79
+ "joehoover/zephyr-7b-alpha:14ec63365a1141134c41b652fe798633f48b1fd28b356725c4d8842a0ac151ee",
80
+ "meta/llama-2-13b-chat:f4e2de70d66816a838a89eeeb621910adffb0dd0baba3976c96980970978018d",
81
+ "meta/llama-2-70b-chat:02e509c789964a7ea8736978a43525956ef40397be9033abf9fd2badfe68c9e3",
82
+ "meta/llama-2-7b-chat:8e6975e5ed6174911a6ff3d60540dfd4844201974602551e10e9e87ab143d81e", ]
83
+
84
+ else:
85
+ llm_options = ["default"]
86
+
87
+ # Allow users to type a custom LLM or choose from list
88
+ chosen_LLM = st.selectbox("Type or Choose Language Model", llm_options)
89
+
90
  api_key = st.text_input("OpenAI API Key", type="password")
91
 
92
+ if api_key and chosen_provider == "OpenAI":
93
+ logger.info("OpenAI API KEY")
94
+ try:
95
+ openai.api_key = api_key
96
+ except:
97
+ st.sidebar.write("Incorrect API key provided")
98
+ if api_key and chosen_provider == "Replicate":
99
+ logger.info("Replicate API KEY")
100
+
101
+ os.environ['REPLICATE_API_TOKEN'] = api_key
102
 
103
  if youtube_url or uploaded_video:
104
  video_file_path = os.path.join(output_path_video, f"{video_loader.video_id}.mp3")
 
114
  logger.info(f"Transcription already exists: {transcription_file_path}")
115
 
116
  video_retriever = factory_video(video_loader.video_id, top_k=int(similarity_top_k))
117
+ transcript_summary = factory_transcript(video_loader.video_id, model=chosen_LLM, llm_provider=chosen_provider)
118
 
119
  docs = load_transcription(video_loader, output_path_transcription)
120
 
 
174
  del st.session_state.generated[:]
175
 
176
 
177
+ # def on_input_change():
178
+ # user_input = st.session_state.user_input
179
+ # st.session_state.past.append(user_input)
180
+ # st.session_state.generated.append("The messages from Bot\nWith new line")
181
+
182
+
183
  def on_input_change():
184
  user_input = st.session_state.user_input
185
  st.session_state.past.append(user_input)
186
  st.session_state.generated.append("The messages from Bot\nWith new line")
187
+ st.session_state.user_input = "" # This will empty the "User Input:" text box
188
 
189
 
190
  if 'generated' not in st.session_state:
summarization_service/summarizer.py CHANGED
@@ -3,29 +3,30 @@ import os
3
 
4
  from llama_index import (ServiceContext, get_response_synthesizer, Document)
5
  from llama_index.indices.document_summary import DocumentSummaryIndex
6
- from llama_index.llms import OpenAI
7
 
8
  from config import output_path_transcription
9
  from logger import logger
10
 
11
 
12
  class TranscriptSummary:
13
- def __init__(self, doc_id, model):
14
  self.doc_id = doc_id
15
  self.document = self.load_json_file_and_extract_text()
16
  self.model = model
 
17
 
18
  # Check for the presence of the openai_key
19
- if "gpt" in self.model and "OPENAI_KEY" in os.environ:
20
- try:
21
- self.llm = OpenAI(temperature=0, model=self.model)
22
- except:
23
- self.llm = "default"
24
-
25
  else:
26
  self.llm = "default"
 
27
  # logger.info(f"LLM ")
28
- logger.info(f"LLM used: {self.llm}"*50)
 
29
 
30
  self.service_context = ServiceContext.from_defaults(llm=self.llm, chunk_size=1024)
31
  self.response_synthesizer = get_response_synthesizer(response_mode="tree_summarize", use_async=True)
 
3
 
4
  from llama_index import (ServiceContext, get_response_synthesizer, Document)
5
  from llama_index.indices.document_summary import DocumentSummaryIndex
6
+ from llama_index.llms import OpenAI, Replicate
7
 
8
  from config import output_path_transcription
9
  from logger import logger
10
 
11
 
12
  class TranscriptSummary:
13
+ def __init__(self, doc_id, model="default", llm_provider=None):
14
  self.doc_id = doc_id
15
  self.document = self.load_json_file_and_extract_text()
16
  self.model = model
17
+ self.llm_provider = llm_provider
18
 
19
  # Check for the presence of the openai_key
20
+ if self.llm_provider == "OpenAI":
21
+ self.llm = OpenAI(model=self.model, temperature=0.9)
22
+ elif self.llm_provider == "Replicate":
23
+ self.llm = Replicate(model=self.model)
 
 
24
  else:
25
  self.llm = "default"
26
+
27
  # logger.info(f"LLM ")
28
+ logger.info(f"Model used: {self.model}")
29
+ logger.info(f"LLM Provider: {self.llm_provider}")
30
 
31
  self.service_context = ServiceContext.from_defaults(llm=self.llm, chunk_size=1024)
32
  self.response_synthesizer = get_response_synthesizer(response_mode="tree_summarize", use_async=True)