|
import os |
|
from bs4 import BeautifulSoup |
|
import requests |
|
from requests.auth import HTTPBasicAuth |
|
from PIL import Image |
|
from io import BytesIO |
|
import pandas as pd |
|
from urllib.parse import urlparse |
|
import os |
|
import cv2 |
|
import numpy as np |
|
import pytesseract |
|
import subprocess |
|
from PIL import Image |
|
from pypdf import PdfReader |
|
from ai71 import AI71 |
|
import os |
|
import PyPDF2 |
|
import pandas as pd |
|
def extract_text_from_image(image_path): |
|
img = cv2.imread(image_path) |
|
if img is None: |
|
raise ValueError("Image not found or unable to load") |
|
|
|
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) |
|
text = pytesseract.image_to_string(img_rgb) |
|
|
|
return text |
|
from inference_sdk import InferenceHTTPClient |
|
import base64 |
|
UPLOAD_FOLDER = '/code/uploads' |
|
if not os.path.exists(UPLOAD_FOLDER): |
|
os.makedirs(UPLOAD_FOLDER) |
|
|
|
pdf_text='' |
|
AI71_API_KEY = os.environ.get('AI71_API_KEY') |
|
def generate_response(query,chat_history): |
|
response = '' |
|
for chunk in AI71(AI71_API_KEY).chat.completions.create( |
|
model="tiiuae/falcon-180b-chat", |
|
messages=[ |
|
{"role": "system", "content": "You are a best agricultural assistant.Remember to give response not more than 2 sentence.Greet the user if user greets you."}, |
|
{"role": "user", |
|
"content": f'''Answer the query based on history {chat_history}:{query}'''}, |
|
], |
|
stream=True, |
|
): |
|
if chunk.choices[0].delta.content: |
|
response += chunk.choices[0].delta.content |
|
return response.replace("###", '').replace('\nUser:','') |
|
class ConversationBufferMemory: |
|
def __init__(self, max_size): |
|
self.memory = [] |
|
self.max_size = max_size |
|
|
|
def add_to_memory(self, interaction): |
|
self.memory.append(interaction) |
|
if len(self.memory) > self.max_size: |
|
self.memory.pop(0) |
|
|
|
def get_memory(self): |
|
return self.memory |
|
def predict_pest(filepath): |
|
try: |
|
CLIENT = InferenceHTTPClient( |
|
api_url="https://detect.roboflow.com", |
|
api_key="oF1aC4b1FBCDtK8CoKx7" |
|
) |
|
result = CLIENT.infer(filepath, model_id="pest-detection-ueoco/1") |
|
return result['predictions'][0] |
|
except: |
|
return None |
|
|
|
|
|
def predict_disease(filepath): |
|
try: |
|
CLIENT = InferenceHTTPClient( |
|
api_url="https://classify.roboflow.com", |
|
api_key="oF1aC4b1FBCDtK8CoKx7" |
|
) |
|
result = CLIENT.infer(filepath, model_id="plant-disease-detection-iefbi/1") |
|
return result['predicted_classes'][0] |
|
except: |
|
return None |
|
|
|
|
|
def convert_img(url, account_sid, auth_token): |
|
if 1==1: |
|
|
|
response = requests.get(url.replace(' ',''), auth=HTTPBasicAuth(account_sid, auth_token)) |
|
response.raise_for_status() |
|
|
|
|
|
parsed_url = urlparse(url.replace(' ','')) |
|
media_id = parsed_url.path.split('/')[-1] |
|
filename = f"image.jpg" |
|
|
|
|
|
txt_filepath = os.path.join(UPLOAD_FOLDER, filename) |
|
with open(txt_filepath, 'wb') as file: |
|
file.write(response.content) |
|
|
|
print(f"Media downloaded successfully and saved as {txt_filepath}") |
|
return txt_filepath |
|
|
|
else : |
|
return 'errir in process none' |
|
|
|
def get_weather(city): |
|
city=city.strip() |
|
city=city.replace(' ',"+") |
|
r = requests.get(f'https://www.google.com/search?q=weather+in+{city}') |
|
|
|
soup=BeautifulSoup(r.text,'html.parser') |
|
temp = soup.find('div', class_='BNeawe iBp4i AP7Wnd').text |
|
|
|
return (temp) |
|
|
|
|
|
from zenrows import ZenRowsClient |
|
from bs4 import BeautifulSoup |
|
Zenrow_api=os.environ.get('Zenrow_api') |
|
|
|
client = ZenRowsClient(str(Zenrow_api)) |
|
|
|
def get_rates(): |
|
url = "https://www.kisandeals.com/mandiprices/ALL/TAMIL-NADU/ALL" |
|
|
|
|
|
response = client.get(url) |
|
|
|
|
|
if response.status_code == 200: |
|
|
|
soup = BeautifulSoup(response.content, 'html.parser') |
|
|
|
|
|
rows = soup.select('table tbody tr') |
|
data = {} |
|
for row in rows: |
|
|
|
columns = row.find_all('td') |
|
if len(columns) >= 2: |
|
commodity = columns[0].get_text(strip=True) |
|
price = columns[1].get_text(strip=True) |
|
if '₹' in price: |
|
data[commodity] = price |
|
return str(data)+" This are the prices for 1 kg" |
|
|
|
|
|
|
|
|
|
def get_news(): |
|
news=[] |
|
url = "https://economictimes.indiatimes.com/news/economy/agriculture?from=mdr" |
|
|
|
|
|
response = client.get(url) |
|
|
|
|
|
if response.status_code == 200: |
|
|
|
soup = BeautifulSoup(response.content, 'html.parser') |
|
|
|
|
|
headlines = soup.find_all("div", class_="eachStory") |
|
for story in headlines: |
|
|
|
headline = story.find('h3').text.strip() |
|
news.append(headline) |
|
return news |
|
|
|
|
|
|
|
def download_and_save_as_txt(url, account_sid, auth_token): |
|
global pdf_text |
|
try: |
|
|
|
response = requests.get(url, auth=HTTPBasicAuth(account_sid, auth_token)) |
|
response.raise_for_status() |
|
|
|
|
|
parsed_url = urlparse(url) |
|
media_id = parsed_url.path.split('/')[-1] |
|
filename = f"pdf_file.pdf" |
|
|
|
|
|
txt_filepath = os.path.join(UPLOAD_FOLDER, filename) |
|
with open(txt_filepath, 'wb') as file: |
|
file.write(response.content) |
|
|
|
print(f"Media downloaded successfully and saved as {txt_filepath}") |
|
pdf_text=extract_text_from_pdf(txt_filepath) |
|
return txt_filepath |
|
|
|
except requests.exceptions.HTTPError as err: |
|
print(f"HTTP error occurred: {err}") |
|
except Exception as err: |
|
print(f"An error occurred: {err}") |
|
|
|
|
|
def extract_text_from_pdf(pdf_path): |
|
global pdf_text |
|
with open(pdf_path, 'rb') as file: |
|
reader = PyPDF2.PdfReader(file) |
|
pdf_text = '' |
|
for page_num in range(len(reader.pages)): |
|
page = reader.pages[page_num] |
|
pdf_text += page.extract_text() |
|
return pdf_text |
|
|
|
|
|
def respond_pdf(query): |
|
extracted_text=pdf_text |
|
res = '' |
|
for chunk in AI71(AI71_API_KEY).chat.completions.create( |
|
model="tiiuae/falcon-11b", |
|
messages=[ |
|
{"role": "system", "content": "You are a pdf answering assistant and you have a pdf as a data."}, |
|
{"role": "user", "content": f"Content:{extracted_text},Query:{query}"}, |
|
], |
|
stream=True, |
|
): |
|
if chunk.choices[0].delta.content: |
|
res += chunk.choices[0].delta.content |
|
return ( res.replace("User:",'').strip()) |
|
|
|
|
|
def booktask(data): |
|
res = '' |
|
for chunk in AI71(AI71_API_KEY).chat.completions.create( |
|
model="tiiuae/falcon-11b", |
|
messages=[ |
|
{"role": "system", "content": "You are an assistant."}, |
|
{"role": "user", "content": f"My finance plan data is {data}.Provide the data in points."}, |
|
], |
|
stream=True, |
|
): |
|
if chunk.choices[0].delta.content: |
|
res += chunk.choices[0].delta.content |
|
return ( res.replace("User:",'').strip()) |
|
|
|
|
|
|
|
def return_bookdata(querry,data): |
|
res = '' |
|
for chunk in AI71(AI71_API_KEY).chat.completions.create( |
|
model="tiiuae/falcon-11b", |
|
messages=[ |
|
{"role": "system", "content": "You are an assistant."}, |
|
{"role": "user", "content": f"My finance plan data is {data}.do what user is telling. user:{querry}.Give the finance format of finance data in points"}, |
|
], |
|
stream=True, |
|
): |
|
if chunk.choices[0].delta.content: |
|
res += chunk.choices[0].delta.content |
|
return ( res.replace("User:",'').strip()) |