ar-dy's picture
added timeout and concurrency
ff3e04b
import requests
import json
from dotenv import load_dotenv
import os
load_dotenv()
ALLOFRESH_SEARCH_API_BASE = os.getenv("ALLOFRESH_SEARCH_API_BASE")
def search_allo_api(query, limit=3):
response = requests.get(
f'{ALLOFRESH_SEARCH_API_BASE}?keyword={query}&limit={limit}&p=1',
timeout=120
)
return json.loads(response.text)
def lctool_search_allo_api(queries):
all_results = []
try:
for q in queries.split(", "):
prods_list = search_allo_api(q)["products"]
all_results.append({
q: [
{k: v for k, v in prod_dict.items() if k in ["name", "price"]}
for prod_dict in prods_list
]
})
return str(all_results)
except Exception as e:
return str(e)
def cut_dialogue_history(history_memory, keep_last_n_words=500):
if history_memory is None or len(history_memory) == 0:
return history_memory
tokens = history_memory.split()
n_tokens = len(tokens)
# print(f"history_memory: {history_memory}, n_tokens: {n_tokens}")
if n_tokens < keep_last_n_words:
return history_memory
paragraphs = history_memory.split('\n')
last_n_tokens = n_tokens
while last_n_tokens >= keep_last_n_words:
last_n_tokens -= len(paragraphs[0].split(' '))
paragraphs = paragraphs[1:]
return '\n' + '\n'.join(paragraphs)