Update app.py
Browse files
app.py
CHANGED
|
@@ -11,7 +11,10 @@ import os
|
|
| 11 |
import pytesseract
|
| 12 |
from PIL import Image
|
| 13 |
import pickle
|
| 14 |
-
from
|
|
|
|
|
|
|
|
|
|
| 15 |
# Load the CSV data as a DataFrame
|
| 16 |
df = pd.read_csv("hf://datasets/kshitij230/Indian-Law/Indian-Law.csv")
|
| 17 |
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
|
|
@@ -335,41 +338,51 @@ faq_tool=Tool(
|
|
| 335 |
func=retrieve_faq,
|
| 336 |
description="Provides Answers to commonly asked questions related to query keyword(s)"
|
| 337 |
)
|
| 338 |
-
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
|
| 342 |
-
|
| 343 |
-
|
| 344 |
You are a highly specialized legal assistant with deep knowledge of the Indian Penal Code (IPC).
|
| 345 |
Your primary task is to retrieve and summarize legal information accurately from the IPC.pdf document provided to you.
|
| 346 |
Your responses should be highly specific, fact-based, and free from any speculation or hallucinations.
|
| 347 |
Always cite the exact section from the IPC when providing an answer.
|
| 348 |
If the information is not available in the document, clearly state that and do not make any assumptions.
|
| 349 |
-
Respond to user queries and engage in conversation
|
| 350 |
-
|
| 351 |
|
| 352 |
Example task: "What is the punishment for theft according to the IPC?"
|
| 353 |
Example response: "According to Section 379 of the IPC, the punishment for theft is imprisonment of either description for a term which may extend to three years, or with fine, or with both."
|
| 354 |
-
|
| 355 |
-
History:{{history}}
|
| 356 |
|
| 357 |
-
|
|
|
|
|
|
|
| 358 |
|
| 359 |
Response:
|
| 360 |
-
"""
|
|
|
|
| 361 |
)
|
| 362 |
|
| 363 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 364 |
|
| 365 |
agent = initialize_agent(
|
| 366 |
tools=agent_tools,
|
| 367 |
-
llm=
|
| 368 |
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
|
| 369 |
verbose=True,
|
| 370 |
return_intermediate_steps=True,
|
| 371 |
-
handle_parsing_errors=True
|
| 372 |
)
|
|
|
|
|
|
|
| 373 |
def encode_image_to_base64(image_path):
|
| 374 |
return pytesseract.image_to_string(Image.open(image_path))
|
| 375 |
def chatbot_response(history,query):
|
|
@@ -393,7 +406,7 @@ def chatbot_response(history,query):
|
|
| 393 |
message = HumanMessage(content=[{"type": "text", "text": query}])
|
| 394 |
|
| 395 |
# Invoke the model with the multimodal message
|
| 396 |
-
result = agent.invoke(
|
| 397 |
response = result['output']
|
| 398 |
intermediate_steps = result.get('intermediate_steps', [])
|
| 399 |
|
|
|
|
| 11 |
import pytesseract
|
| 12 |
from PIL import Image
|
| 13 |
import pickle
|
| 14 |
+
from langchain.agents import AgentType, initialize_agent
|
| 15 |
+
from langchain.memory import ConversationBufferMemory
|
| 16 |
+
from langchain.llms import HuggingFaceHub
|
| 17 |
+
from langchain.tools import Tool
|
| 18 |
# Load the CSV data as a DataFrame
|
| 19 |
df = pd.read_csv("hf://datasets/kshitij230/Indian-Law/Indian-Law.csv")
|
| 20 |
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
|
|
|
|
| 338 |
func=retrieve_faq,
|
| 339 |
description="Provides Answers to commonly asked questions related to query keyword(s)"
|
| 340 |
)
|
| 341 |
+
from langchain.prompts import PromptTemplate
|
| 342 |
+
from langchain.chains import LLMChain
|
| 343 |
+
from langchain.memory import ConversationBufferMemory
|
| 344 |
+
|
| 345 |
+
prompt = PromptTemplate(
|
| 346 |
+
template="""
|
| 347 |
You are a highly specialized legal assistant with deep knowledge of the Indian Penal Code (IPC).
|
| 348 |
Your primary task is to retrieve and summarize legal information accurately from the IPC.pdf document provided to you.
|
| 349 |
Your responses should be highly specific, fact-based, and free from any speculation or hallucinations.
|
| 350 |
Always cite the exact section from the IPC when providing an answer.
|
| 351 |
If the information is not available in the document, clearly state that and do not make any assumptions.
|
| 352 |
+
Respond to user queries and engage in conversation to resolve their query.
|
|
|
|
| 353 |
|
| 354 |
Example task: "What is the punishment for theft according to the IPC?"
|
| 355 |
Example response: "According to Section 379 of the IPC, the punishment for theft is imprisonment of either description for a term which may extend to three years, or with fine, or with both."
|
|
|
|
|
|
|
| 356 |
|
| 357 |
+
History: {history}
|
| 358 |
+
|
| 359 |
+
User: {query}
|
| 360 |
|
| 361 |
Response:
|
| 362 |
+
""",
|
| 363 |
+
input_variables=["history", "query"]
|
| 364 |
)
|
| 365 |
|
| 366 |
+
llm = HuggingFaceEndpoint(
|
| 367 |
+
repo_id="meta-llama/Meta-Llama-3-8B",
|
| 368 |
+
task="text-generation",
|
| 369 |
+
timeout=None
|
| 370 |
+
)
|
| 371 |
+
|
| 372 |
+
llm_chain = LLMChain(prompt=prompt, llm=llm, memory=ConversationBufferMemory())
|
| 373 |
+
|
| 374 |
+
agent_tools = [ipc_tool, crpc_tool, doj_tool, faq_tool]
|
| 375 |
|
| 376 |
agent = initialize_agent(
|
| 377 |
tools=agent_tools,
|
| 378 |
+
llm=llm_chain,
|
| 379 |
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
|
| 380 |
verbose=True,
|
| 381 |
return_intermediate_steps=True,
|
| 382 |
+
handle_parsing_errors=True
|
| 383 |
)
|
| 384 |
+
|
| 385 |
+
|
| 386 |
def encode_image_to_base64(image_path):
|
| 387 |
return pytesseract.image_to_string(Image.open(image_path))
|
| 388 |
def chatbot_response(history,query):
|
|
|
|
| 406 |
message = HumanMessage(content=[{"type": "text", "text": query}])
|
| 407 |
|
| 408 |
# Invoke the model with the multimodal message
|
| 409 |
+
result = agent.invoke({'query':message.content},handle_parsing_errors=True)
|
| 410 |
response = result['output']
|
| 411 |
intermediate_steps = result.get('intermediate_steps', [])
|
| 412 |
|