rjavedv
some more updates
202ad69
raw
history blame
3.04 kB
"""
30-01-2025
Rashid Javed
A simple dictionary to get word meaning, synonyms, antonyms
"""
from huggingface_hub import InferenceClient
import os
import requests as re
import json
import streamlit as st
##### Start Func Def part
## Call selected LLM, get word def and return
def call_llm(lmodel: str, lword: str, sysmsg: str, ltoken: str) -> str:
#ltoken = os.getenv('HF_TOKEN')
usermsg = lword
messages = [
{ "role": "system", "content": sysmsg },
{ "role": "user", "content": usermsg }
]
client = InferenceClient(
model= lmodel,
token= ltoken
)
completion = client.chat.completions.create(
model= lmodel,
messages= messages,
temperature=0.5,
max_tokens=2048,
top_p=0.7,
stream=False
)
return(completion.choices[0].message.content)
## Call Dictionary API and get word def
def call_dict_api(lword: str) -> dict:
dict_url = 'https://api.dictionaryapi.dev/api/v2/entries/en/'
api_url = dict_url + lword
response = re.get(url=api_url)
rjson = response.json()
if type(rjson) == dict:
return rjson
elif type(rjson) == list:
return rjson[0]
else:
return dict()
##### End Func Def part
sysmsg = '''You are an English language expert. You are precise in your output.
User will ask you a word and in your response you will include the word meaning, synonyms, antonyms, and word usage examples.
Format your output in different sections to make it easy to understand.'''
lmodel = 'meta-llama/Llama-3.2-3B-Instruct'
ltoken = os.getenv('HF_TOKEN')
llm_out = ''
api_out = dict()
st.set_page_config(page_title='Simple Dictionary', page_icon=':blue_book:', layout="wide")
st.title('A simple dictionary')
lword = st.text_input(label='Enter word')
lmodel = st.selectbox('Choose Language Model:',
index=0,
options=['meta-llama/Llama-3.2-3B-Instruct', 'Qwen/Qwen2.5-1.5B-Instruct', 'microsoft/Phi-3.5-mini-instruct']
)
sys_prmpt = st.text_area(label='Sytem Prompt:', value=sysmsg)
chk1 = st.checkbox(label='Use Language model to get word definition', value=True)
chk2 = st.checkbox(label='Use Dictionary API call to get word definition', value=True)
btn_submit = st.button(label='Submit')
##st.write(os.environ)
if btn_submit:
if chk1:
llm_out = call_llm(lmodel, lword, sys_prmpt, ltoken)
if chk2:
api_out = call_dict_api(lword)
col1, col2 = st.columns(2, border=True)
with col1:
st.subheader(':green[LLM Output]')
if chk1:
st.write(llm_out)
else:
st.write('LLM Call option not selected')
with col2:
st.subheader(':orange[API Call]')
if chk2:
st.write(api_out)
else:
st.write('API Call option not selected')
st.divider()
st.write('*:blue[Developed By: Rashid Javed]*')
st.write('Dictionary API Call courtesy of ')
st.page_link('https://dictionaryapi.dev/', label='https://dictionaryapi.dev/')