Spaces:
Build error
Build error
''' | |
Contributed by SagsMug. Thank you SagsMug. | |
https://github.com/oobabooga/text-generation-webui/pull/175 | |
''' | |
import asyncio | |
import json | |
import random | |
import string | |
import websockets | |
def random_hash(): | |
letters = string.ascii_lowercase + string.digits | |
return ''.join(random.choice(letters) for i in range(9)) | |
async def run(context): | |
server = "127.0.0.1" | |
params = { | |
'max_new_tokens': 200, | |
'do_sample': True, | |
'temperature': 0.5, | |
'top_p': 0.9, | |
'typical_p': 1, | |
'repetition_penalty': 1.05, | |
'top_k': 0, | |
'min_length': 0, | |
'no_repeat_ngram_size': 0, | |
'num_beams': 1, | |
'penalty_alpha': 0, | |
'length_penalty': 1, | |
'early_stopping': False, | |
} | |
session = random_hash() | |
async with websockets.connect(f"ws://{server}:7860/queue/join") as websocket: | |
while content := json.loads(await websocket.recv()): | |
#Python3.10 syntax, replace with if elif on older | |
match content["msg"]: | |
case "send_hash": | |
await websocket.send(json.dumps({ | |
"session_hash": session, | |
"fn_index": 7 | |
})) | |
case "estimation": | |
pass | |
case "send_data": | |
await websocket.send(json.dumps({ | |
"session_hash": session, | |
"fn_index": 7, | |
"data": [ | |
context, | |
params['max_new_tokens'], | |
params['do_sample'], | |
params['temperature'], | |
params['top_p'], | |
params['typical_p'], | |
params['repetition_penalty'], | |
params['top_k'], | |
params['min_length'], | |
params['no_repeat_ngram_size'], | |
params['num_beams'], | |
params['penalty_alpha'], | |
params['length_penalty'], | |
params['early_stopping'], | |
] | |
})) | |
case "process_starts": | |
pass | |
case "process_generating" | "process_completed": | |
yield content["output"]["data"][0] | |
# You can search for your desired end indicator and | |
# stop generation by closing the websocket here | |
if (content["msg"] == "process_completed"): | |
break | |
prompt = "What I would like to say is the following: " | |
async def get_result(): | |
async for response in run(prompt): | |
# Print intermediate steps | |
print(response) | |
# Print final result | |
print(response) | |
asyncio.run(get_result()) | |