Update app.py
Browse files
app.py
CHANGED
|
@@ -14,6 +14,7 @@ from huggingface_hub import InferenceClient
|
|
| 14 |
from langchain.llms.base import LLM
|
| 15 |
from typing import Optional, List, Any
|
| 16 |
from transformers import AutoTokenizer, AutoModelForCausalLM
|
|
|
|
| 17 |
|
| 18 |
# Initialize Flask application
|
| 19 |
app = Flask(__name__)
|
|
@@ -142,19 +143,12 @@ def init_db():
|
|
| 142 |
conn.commit()
|
| 143 |
|
| 144 |
def initialize_llm():
|
| 145 |
-
"""Initialize the LLM using
|
| 146 |
try:
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
if not api_token:
|
| 150 |
-
raise ValueError("No API token found")
|
| 151 |
-
|
| 152 |
-
# Initialize the InferenceClient
|
| 153 |
-
client = InferenceClient(api_key=api_token)
|
| 154 |
-
|
| 155 |
print("LLM initialized successfully!")
|
| 156 |
-
return
|
| 157 |
-
|
| 158 |
except Exception as e:
|
| 159 |
print(f"LLM initialization error: {str(e)}")
|
| 160 |
return None
|
|
@@ -270,12 +264,7 @@ try:
|
|
| 270 |
print("Initializing database...")
|
| 271 |
init_db()
|
| 272 |
print("Database initialized successfully")
|
| 273 |
-
|
| 274 |
-
print("Initializing LLM...")
|
| 275 |
-
llm_client = initialize_llm()
|
| 276 |
-
if llm_client is None:
|
| 277 |
-
raise ValueError("LLM initialization failed")
|
| 278 |
-
print("LLM initialized successfully")
|
| 279 |
|
| 280 |
|
| 281 |
|
|
@@ -313,11 +302,12 @@ Output Guidelines:
|
|
| 313 |
- Mark critical information with [IMPORTANT] prefix and give small explanations with some bold headings if required and in white font always.
|
| 314 |
"""
|
| 315 |
|
| 316 |
-
|
| 317 |
-
|
| 318 |
-
|
| 319 |
-
|
| 320 |
-
|
|
|
|
| 321 |
|
| 322 |
|
| 323 |
def convert_to_html(raw_text):
|
|
@@ -469,45 +459,27 @@ def chat():
|
|
| 469 |
user_input = data.get("message", "")
|
| 470 |
print(f"Received message: {user_input}")
|
| 471 |
|
| 472 |
-
|
| 473 |
-
|
| 474 |
-
|
| 475 |
-
"response": "No message provided."
|
| 476 |
-
})
|
| 477 |
|
| 478 |
-
#
|
| 479 |
-
|
| 480 |
-
{"role": "user", "content": user_input}
|
| 481 |
-
]
|
| 482 |
-
|
| 483 |
-
try:
|
| 484 |
-
# Get response from the model using InferenceClient
|
| 485 |
-
if llm_client:
|
| 486 |
-
completion = llm_client.chat.completions.create(
|
| 487 |
-
model="mistralai/Mistral-7B-Instruct-v0.3", # Replace with the appropriate model
|
| 488 |
-
messages=messages,
|
| 489 |
-
max_tokens=150 # Adjust the max tokens as needed
|
| 490 |
-
)
|
| 491 |
-
response = completion['choices'][0]['message']['content']
|
| 492 |
-
print(f"Raw response received: {response}")
|
| 493 |
-
|
| 494 |
-
# Return the model's response
|
| 495 |
-
return jsonify({
|
| 496 |
-
"success": True,
|
| 497 |
-
"response": response
|
| 498 |
-
})
|
| 499 |
|
| 500 |
-
|
| 501 |
-
|
|
|
|
|
|
|
| 502 |
|
| 503 |
-
|
| 504 |
-
print(f"Model error: {str(e)}")
|
| 505 |
-
# Return a simple error message
|
| 506 |
return jsonify({
|
| 507 |
-
"success":
|
| 508 |
-
"response":
|
| 509 |
})
|
| 510 |
|
|
|
|
|
|
|
|
|
|
| 511 |
except Exception as e:
|
| 512 |
print(f"Request error: {str(e)}")
|
| 513 |
return jsonify({
|
|
|
|
| 14 |
from langchain.llms.base import LLM
|
| 15 |
from typing import Optional, List, Any
|
| 16 |
from transformers import AutoTokenizer, AutoModelForCausalLM
|
| 17 |
+
from transformers import pipeline
|
| 18 |
|
| 19 |
# Initialize Flask application
|
| 20 |
app = Flask(__name__)
|
|
|
|
| 143 |
conn.commit()
|
| 144 |
|
| 145 |
def initialize_llm():
|
| 146 |
+
"""Initialize the LLM using transformers pipeline."""
|
| 147 |
try:
|
| 148 |
+
model_name = "mistralai/Mistral-7B-Instruct-v0.3"
|
| 149 |
+
llm = pipeline("text-generation", model=model_name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 150 |
print("LLM initialized successfully!")
|
| 151 |
+
return llm
|
|
|
|
| 152 |
except Exception as e:
|
| 153 |
print(f"LLM initialization error: {str(e)}")
|
| 154 |
return None
|
|
|
|
| 264 |
print("Initializing database...")
|
| 265 |
init_db()
|
| 266 |
print("Database initialized successfully")
|
| 267 |
+
llm = initialize_llm()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 268 |
|
| 269 |
|
| 270 |
|
|
|
|
| 302 |
- Mark critical information with [IMPORTANT] prefix and give small explanations with some bold headings if required and in white font always.
|
| 303 |
"""
|
| 304 |
|
| 305 |
+
def generate_prompt(user_request, chat_history, important_info):
|
| 306 |
+
return prompt_template.format(
|
| 307 |
+
user_request=user_request,
|
| 308 |
+
chat_history=chat_history,
|
| 309 |
+
important_info=important_info
|
| 310 |
+
)
|
| 311 |
|
| 312 |
|
| 313 |
def convert_to_html(raw_text):
|
|
|
|
| 459 |
user_input = data.get("message", "")
|
| 460 |
print(f"Received message: {user_input}")
|
| 461 |
|
| 462 |
+
# Very simple example for the chat history and important information (can be more complex)
|
| 463 |
+
chat_history = "" # Assuming you maintain chat history somehow
|
| 464 |
+
important_info = "Provide code examples for Python programming."
|
|
|
|
|
|
|
| 465 |
|
| 466 |
+
# Generate the prompt
|
| 467 |
+
prompt = generate_prompt(user_input, chat_history, important_info)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 468 |
|
| 469 |
+
# Get response from the model using transformers pipeline
|
| 470 |
+
if llm:
|
| 471 |
+
response = llm(prompt, max_length=150)[0]['generated_text']
|
| 472 |
+
print(f"Raw response received: {response}")
|
| 473 |
|
| 474 |
+
# Return the model's response
|
|
|
|
|
|
|
| 475 |
return jsonify({
|
| 476 |
+
"success": True,
|
| 477 |
+
"response": response
|
| 478 |
})
|
| 479 |
|
| 480 |
+
else:
|
| 481 |
+
raise ValueError("LLM not initialized properly.")
|
| 482 |
+
|
| 483 |
except Exception as e:
|
| 484 |
print(f"Request error: {str(e)}")
|
| 485 |
return jsonify({
|