Futuresony commited on
Commit
0ec21e2
Β·
verified Β·
1 Parent(s): c4efeea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -22
app.py CHANGED
@@ -9,7 +9,7 @@ from huggingface_hub import InferenceClient, hf_hub_download
9
 
10
  # πŸ”Ή Hugging Face Credentials
11
  HF_REPO = "Futuresony/future_ai_12_10_2024.gguf"
12
- HF_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') # Store your token as an environment variable for security
13
 
14
  # πŸ”Ή FAISS Index Path
15
  FAISS_PATH = "asa_faiss.index"
@@ -24,34 +24,35 @@ faiss_index = faiss.read_index(faiss_local_path)
24
  # πŸ”Ή Initialize Hugging Face Model Client
25
  client = InferenceClient(model=HF_REPO, token=HF_TOKEN)
26
 
27
- # πŸ”Ή Retrieve Relevant FAISS Context
28
- def retrieve_relevant_context(user_query, top_k=3):
29
  query_embedding = embedder.encode([user_query], convert_to_tensor=True).cpu().numpy()
30
  distances, indices = faiss_index.search(query_embedding, top_k)
31
 
32
  retrieved_texts = []
33
  for idx in indices[0]: # Extract top_k results
34
  if idx != -1: # Ensure valid index
35
- retrieved_texts.append(f"Example: {idx} β†’ {idx}") # Customize how retrieved data appears
36
 
37
- return "\n".join(retrieved_texts) if retrieved_texts else "No relevant data found."
38
 
39
- # πŸ”Ή Format Model Prompt with FAISS Guidance
40
- def format_prompt(user_input, system_prompt, history):
41
- retrieved_context = retrieve_relevant_context(user_input)
42
 
43
- faiss_instruction = (
44
- "Use the following example responses as a guide for formatting and writing style:\n"
45
- f"{retrieved_context}\n\n"
46
- "### Instruction:\n"
47
- f"{user_input}\n\n### Response:"
48
- )
49
 
50
- return faiss_instruction
 
51
 
52
- # πŸ”Ή Chatbot Response Function
53
- def respond(message, history, system_message, max_tokens, temperature, top_p):
54
- full_prompt = format_prompt(message, system_message, history)
 
 
55
 
56
  response = client.text_generation(
57
  full_prompt,
@@ -60,18 +61,18 @@ def respond(message, history, system_message, max_tokens, temperature, top_p):
60
  top_p=top_p,
61
  )
62
 
63
- # βœ… Extract only model-generated response
64
  cleaned_response = response.split("### Response:")[-1].strip()
65
-
66
  history.append((message, cleaned_response)) # βœ… Update chat history
67
-
68
  yield cleaned_response # βœ… Output the response
69
 
70
  # πŸ”Ή Gradio Chat Interface
71
  demo = gr.ChatInterface(
72
  respond,
73
  additional_inputs=[
74
- gr.Textbox(value="You are a helpful AI trained to follow FAISS-based writing styles.", label="System message"),
75
  gr.Slider(minimum=1, maximum=250, value=128, step=1, label="Max new tokens"),
76
  gr.Slider(minimum=0.1, maximum=4.0, value=0.9, step=0.1, label="Temperature"),
77
  gr.Slider(minimum=0.1, maximum=1.0, value=0.99, step=0.01, label="Top-p (nucleus sampling)"),
 
9
 
10
  # πŸ”Ή Hugging Face Credentials
11
  HF_REPO = "Futuresony/future_ai_12_10_2024.gguf"
12
+ HF_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') # Ensure this is set in your environment
13
 
14
  # πŸ”Ή FAISS Index Path
15
  FAISS_PATH = "asa_faiss.index"
 
24
  # πŸ”Ή Initialize Hugging Face Model Client
25
  client = InferenceClient(model=HF_REPO, token=HF_TOKEN)
26
 
27
+ # πŸ”Ή Retrieve Relevant FAISS Data
28
+ def retrieve_faiss_knowledge(user_query, top_k=3):
29
  query_embedding = embedder.encode([user_query], convert_to_tensor=True).cpu().numpy()
30
  distances, indices = faiss_index.search(query_embedding, top_k)
31
 
32
  retrieved_texts = []
33
  for idx in indices[0]: # Extract top_k results
34
  if idx != -1: # Ensure valid index
35
+ retrieved_texts.append(f"Example {idx}: (Extracted FAISS Data)")
36
 
37
+ return "\n".join(retrieved_texts) if retrieved_texts else "**No relevant FAISS data found.**"
38
 
39
+ # πŸ”Ή Chatbot Response Function (Forcing FAISS Context)
40
+ def respond(message, history, system_message, max_tokens, temperature, top_p):
41
+ faiss_context = retrieve_faiss_knowledge(message)
42
 
43
+ # πŸ”₯ Force the model to use FAISS
44
+ full_prompt = f"""### System Instruction:
45
+ You MUST use the provided FAISS data to generate your response.
46
+ If no FAISS data is found, return "I don't have enough information."
 
 
47
 
48
+ ### Retrieved FAISS Data:
49
+ {faiss_context}
50
 
51
+ ### User Query:
52
+ {message}
53
+
54
+ ### Response:
55
+ """
56
 
57
  response = client.text_generation(
58
  full_prompt,
 
61
  top_p=top_p,
62
  )
63
 
64
+ # βœ… Extract only the model-generated response
65
  cleaned_response = response.split("### Response:")[-1].strip()
66
+
67
  history.append((message, cleaned_response)) # βœ… Update chat history
68
+
69
  yield cleaned_response # βœ… Output the response
70
 
71
  # πŸ”Ή Gradio Chat Interface
72
  demo = gr.ChatInterface(
73
  respond,
74
  additional_inputs=[
75
+ gr.Textbox(value="You are a knowledge assistant that must use FAISS context.", label="System message"),
76
  gr.Slider(minimum=1, maximum=250, value=128, step=1, label="Max new tokens"),
77
  gr.Slider(minimum=0.1, maximum=4.0, value=0.9, step=0.1, label="Temperature"),
78
  gr.Slider(minimum=0.1, maximum=1.0, value=0.99, step=0.01, label="Top-p (nucleus sampling)"),