Refactoring: modular configuration, separated learning and response logic
This commit is contained in:
		
							parent
							
								
									0ecbfbadd0
								
							
						
					
					
						commit
						8c76b90e17
					
				
							
								
								
									
										10
									
								
								src/chadgpt/chatbot.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/chadgpt/chatbot.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | from gpt_index import GPTSimpleVectorIndex | ||||||
|  | from .config import DB_PATH | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def chatbot(input_text): | ||||||
|  |     # TODO: need check if index_file no exist | ||||||
|  |     index_file = DB_PATH + "/index.json" | ||||||
|  |     index = GPTSimpleVectorIndex.load_from_disk(index_file) | ||||||
|  |     response = index.query(input_text, response_mode="compact") | ||||||
|  |     return response.response | ||||||
							
								
								
									
										6
									
								
								src/chadgpt/config.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/chadgpt/config.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | import os | ||||||
|  | from dotenv import load_dotenv | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | load_dotenv() | ||||||
|  | DB_PATH = os.environ.get("DB_PATH", "/app/db") | ||||||
							
								
								
									
										43
									
								
								src/chadgpt/indexer.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/chadgpt/indexer.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | from langchain.chat_models import ChatOpenAI | ||||||
|  | from gpt_index import ( | ||||||
|  |     SimpleDirectoryReader, | ||||||
|  |     GPTSimpleVectorIndex, | ||||||
|  |     LLMPredictor, | ||||||
|  |     PromptHelper | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def construct_index(db_path): | ||||||
|  |     max_input_size = 4096 | ||||||
|  |     num_outputs = 512 | ||||||
|  |     max_chunk_overlap = 20 | ||||||
|  |     chunk_size_limit = 600 | ||||||
|  | 
 | ||||||
|  |     prompt_helper = PromptHelper( | ||||||
|  |         max_input_size, | ||||||
|  |         num_outputs, | ||||||
|  |         max_chunk_overlap, | ||||||
|  |         chunk_size_limit=chunk_size_limit | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     llm = ChatOpenAI( | ||||||
|  |         temperature=0.7, | ||||||
|  |         model_name="gpt-3.5-turbo", | ||||||
|  |         max_tokens=num_outputs | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     llm_predictor = LLMPredictor(llm) | ||||||
|  | 
 | ||||||
|  |     # get documents for learn: | ||||||
|  |     documents = SimpleDirectoryReader(db_path).load_data() | ||||||
|  | 
 | ||||||
|  |     index = GPTSimpleVectorIndex( | ||||||
|  |         documents, | ||||||
|  |         llm_predictor=llm_predictor, | ||||||
|  |         prompt_helper=prompt_helper | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     index_file = db_path + "/index.json" | ||||||
|  |     index.save_to_disk(index_file) | ||||||
|  | 
 | ||||||
|  |     return index | ||||||
							
								
								
									
										10
									
								
								src/chadgpt/interface.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/chadgpt/interface.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | import gradio as gr | ||||||
|  | from .chatbot import chatbot | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | iface = gr.Interface( | ||||||
|  |     fn=chatbot, | ||||||
|  |     inputs=gr.components.Textbox(lines=7, label="Enter your text"), | ||||||
|  |     outputs="text", | ||||||
|  |     title="ISPsystem custom-trained AI Chatbot" | ||||||
|  | ) | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user