Spaces:
Running
Running
File size: 4,584 Bytes
8537019 aa4f694 8537019 3e68ccf 724babe aa4f694 724babe 3e68ccf 724babe 3e68ccf e55d16a 3e68ccf e55d16a 3e68ccf aa4f694 3e68ccf e55d16a 3e68ccf 724babe 469fc38 724babe 3e68ccf 724babe e55d16a 3e68ccf e55d16a 3e68ccf 724babe 469fc38 724babe 3e68ccf 8537019 c6643c7 8537019 aa4f694 8537019 aa4f694 8537019 aa4f694 8537019 aa4f694 8537019 3e68ccf 8537019 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
import json
import logging
import time
import requests
from langchain.llms import Clarifai
from global_config import GlobalConfig
HF_API_URL = f"https://api-inference.huggingface.co/models/{GlobalConfig.HF_LLM_MODEL_NAME}"
HF_API_HEADERS = {"Authorization": f"Bearer {GlobalConfig.HUGGINGFACEHUB_API_TOKEN}"}
logging.basicConfig(
level=GlobalConfig.LOG_LEVEL,
format='%(asctime)s - %(message)s',
)
# llm = None
def get_llm(use_gpt: bool) -> Clarifai:
"""
Get a large language model (hosted by Clarifai).
:param use_gpt: True if GPT-3.5 is required; False is Llama 2 is required
"""
if use_gpt:
_ = Clarifai(
pat=GlobalConfig.CLARIFAI_PAT,
user_id=GlobalConfig.CLARIFAI_USER_ID_GPT,
app_id=GlobalConfig.CLARIFAI_APP_ID_GPT,
model_id=GlobalConfig.CLARIFAI_MODEL_ID_GPT,
verbose=True,
# temperature=0.1,
)
else:
_ = Clarifai(
pat=GlobalConfig.CLARIFAI_PAT,
user_id=GlobalConfig.CLARIFAI_USER_ID,
app_id=GlobalConfig.CLARIFAI_APP_ID,
model_id=GlobalConfig.CLARIFAI_MODEL_ID,
verbose=True,
# temperature=0.1,
)
# print(llm)
return _
def hf_api_query(payload: dict):
"""
Invoke HF inference end-point API.
:param payload: The prompt for the LLM and related parameters
:return: The output from the LLM
"""
# logging.debug(f'{payload=}')
response = requests.post(HF_API_URL, headers=HF_API_HEADERS, json=payload)
return response.json()
def generate_slides_content(topic: str) -> str:
"""
Generate the outline/contents of slides for a presentation on a given topic.
:param topic: Topic on which slides are to be generated
:return: The content in JSON format
"""
with open(GlobalConfig.SLIDES_TEMPLATE_FILE, 'r') as in_file:
template_txt = in_file.read().strip()
template_txt = template_txt.replace('<REPLACE_PLACEHOLDER>', topic)
output = hf_api_query({
"inputs": template_txt,
"parameters": {
'temperature': GlobalConfig.LLM_MODEL_TEMPERATURE,
'min_length': GlobalConfig.LLM_MODEL_MIN_OUTPUT_LENGTH,
'max_length': GlobalConfig.LLM_MODEL_MAX_OUTPUT_LENGTH,
'max_new_tokens': GlobalConfig.LLM_MODEL_MAX_OUTPUT_LENGTH,
'num_return_sequences': 1,
'return_full_text': False,
# "repetition_penalty": 0.0001
},
"options": {
'wait_for_model': True,
'use_cache': True
}
})
output = output[0]['generated_text'].strip()
# output = output[len(template_txt):]
json_end_idx = output.rfind('```')
if json_end_idx != -1:
# logging.debug(f'{json_end_idx=}')
output = output[:json_end_idx]
logging.debug(f'{output=}')
return output
def get_ai_image(text: str) -> str:
"""
Get a Stable Diffusion-generated image based on a given text.
:param text: The input text
:return: The Base 64-encoded image
"""
url = f'''https://api.clarifai.com/v2/users/{GlobalConfig.CLARIFAI_USER_ID_SD}/apps/{GlobalConfig.CLARIFAI_APP_ID_SD}/models/{GlobalConfig.CLARIFAI_MODEL_ID_SD}/versions/{GlobalConfig.CLARIFAI_MODEL_VERSION_ID_SD}/outputs'''
headers = {
"Content-Type": "application/json",
"Authorization": f'Key {GlobalConfig.CLARIFAI_PAT}'
}
data = {
"inputs": [
{
"data": {
"text": {
"raw": text
}
}
}
]
}
# print('*** AI image generator...')
# print(url)
start = time.time()
response = requests.post(
url=url,
headers=headers,
data=json.dumps(data)
)
stop = time.time()
# print('Response:', response, response.status_code)
logging.debug('Image generation took', stop - start, 'seconds')
img_data = ''
if response.ok:
# print('*** Clarifai SDXL request: Response OK')
json_data = json.loads(response.text)
img_data = json_data['outputs'][0]['data']['image']['base64']
else:
logging.error('*** Image generation failed:', response.text)
return img_data
if __name__ == '__main__':
# results = get_related_websites('5G AI WiFi 6')
#
# for a_result in results.results:
# print(a_result.title, a_result.url, a_result.extract)
# get_ai_image('A talk on AI, covering pros and cons')
pass
|