Spaces:
Running
on
Zero
Running
on
Zero
from openai import OpenAI | |
from openai import OpenAI | |
from .Model import Model | |
import tiktoken | |
from transformers import AutoTokenizer | |
import time | |
class Deepseek(Model): | |
def __init__(self, config): | |
super().__init__(config) | |
api_keys = config["api_key_info"]["api_keys"] | |
api_pos = int(config["api_key_info"]["api_key_use"]) | |
assert (0 <= api_pos < len(api_keys)), "Please enter a valid API key to use" | |
self.max_output_tokens = int(config["params"]["max_output_tokens"]) | |
self.client = OpenAI(api_key=api_keys[api_pos], base_url="https://api.deepseek.com") | |
self.llama_tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B-Instruct") | |
self.encoding = tiktoken.encoding_for_model("gpt-3.5-turbo") | |
self.seed = 10 | |
def query(self, msg, max_tokens=128000): | |
super().query(max_tokens) | |
while True: | |
try: | |
response = self.client.chat.completions.create( | |
model=self.name, | |
temperature=self.temperature, | |
max_tokens=self.max_output_tokens, | |
seed = self.seed, | |
messages=[ | |
{"role": "system", "content": "You are a helpful assistant"}, | |
{"role": "user", "content": msg}, | |
], | |
stream=False | |
) | |
print(response.choices[0].message.content) | |
time.sleep(1) | |
break | |
except Exception as e: | |
print(e) | |
time.sleep(10) | |
return response.choices[0].message.content | |
def get_prompt_length(self,msg): | |
encoding = tiktoken.encoding_for_model("gpt-3.5-turbo") | |
num_tokens = len(encoding.encode(msg)) | |
return num_tokens | |
def cut_context(self,msg,max_length): | |
tokens = self.encoding.encode(msg) | |
truncated_tokens = tokens[:max_length] | |
truncated_text = self.encoding.decode(truncated_tokens) | |
return truncated_text | |