Spaces:
Sleeping
Sleeping
File size: 1,752 Bytes
b56b764 |
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 |
import os
import re
import json
import requests
class Skill:
def __init__(self:object) -> None:
pass
def set_tokenizer(self:object, tokenizer:object):
self.tokenizer = tokenizer
def predict(self, question:str, seed=1234, out_seq_length=256, min_gen_length=1, sampling_strategy="BaseStrategy", num_beams=2, length_penalty=1, no_repeat_ngram_size=3, temperature=0.1, topk=1, topp=0.1):
url = 'https://pretrain.aminer.cn/api/v2/completions'
prompt = question
payload = json.dumps({
"apikey": os.environ.get("WINNIE_APIKEY"),
"apisecret": os.environ.get("WINNIE_APISECRET"),
"model": "glm",
"language": "zh-CN",
"prompt": prompt,
"temperature": temperature,
"top_k": topk,
"top_p": topp,
"max_tokens": out_seq_length,
"stop": ["\n"],
"presence_penalty": 2,
"frequency_penalty": 2
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload).json()
if "output" in response["result"]:
answer = response["result"]["output"]["raw"].split("<|startofpiece|>")[-1]
return answer
def process(self:object, input_txt:str, history_list:list, role_card:dict):
output_text:str = None
if input_txt.find("[MASK]") != -1:
history_list.append( self.tokenizer.encode(input_txt, add_special_tokens=False) )
output_text = self.predict(input_txt)
history_list.append( self.tokenizer.encode(output_text, add_special_tokens=False) )
return output_text, history_list, role_card
|