text2quiz_backend / flashcard_util.py
Huy Nguyen
update to python310 image
19ac67f
raw
history blame
2.6 kB
import lang
from asyncreq_util import async_post
import requests
import json
from imgsearch import search_img
from re import match, sub
from env import LLM_API_KEY
def remove_numbering(text):
"""Removes list-like numberings (e.g., 1., 2. etc.) from a string.
Args:
text: The string to process.
Returns:
The string with numberings removed.
"""
pattern = r"\d+\.\s?" # Matches one or more digits followed by a dot and optional space
return sub(pattern, "", text)
async def tldr(content, l=lang.VI_VN):
_r = requests.post(
url="https://api.awanllm.com/v1/chat/completions",
headers={'Content-Type': 'application/json', 'Authorization': f'Bearer {LLM_API_KEY}'},
data=json.dumps({
"model": "Meta-Llama-3-8B-Instruct",
"messages": [
{"role": "user", "content": f"tl;dr in {l}: {content}"}
],
"presence_penalty":0.3,
"temperature":0.55
})
)
_summary = _r.json()
# print(_summary)
return _summary['choices'][0]['message']['content'].split('\n',1)[-1].strip()
async def fetch_img_for_words(words: list[str]):
print("fetching images...")
_img_link = [search_img(r) for r in words]
return [(word,img) for (word, img) in zip(words, _img_link)]
async def get_definitions_from_words(words: list[str], summary: str = ""):
print("running inferrence")
_r = requests.post(
url="https://api.awanllm.com/v1/chat/completions",
headers={'Content-Type': 'application/json', 'Authorization': f'Bearer {LLM_API_KEY}'},
data=json.dumps({
"model": "Meta-Llama-3-8B-Instruct",
"messages": [
{"role": "user", "content": f"{summary}. Based on this paragraph and your knowledge, give easy-to-understand definitions for the following words: {'; '.join(words)}"}
],
"presence_penalty":0.3,
"temperature":0.55
})
)
# print(_r.json()['choices'][0]['message']['content'].split('\n'))
print(_r.json()['choices'][0]['message']['content'].split('\n'))
rets = []
for _x in _r.json()['choices'][0]['message']['content'].split('\n'):
try:
k, v = _x.split(':')
k = k.replace('*','').strip()
k = remove_numbering(k)
v = v.strip()
if (v != ''):
rets.append((k, v))
except:
continue
return rets[:-1]
def get_imgs_from_words(words: list[str]):
pass
def classify_words(words: list[str], deep: bool = False):
pass