Добавление контекста в переброс
This commit is contained in:
parent
b02fde3fcd
commit
8bde017a31
|
@ -8,7 +8,10 @@ MARKUP_FIX = True #Фикс потерянных кавычек и звездо
|
||||||
COOKIE_NAME = "cookies.json"
|
COOKIE_NAME = "cookies.json"
|
||||||
USER_MESSAGE_WORKAROUND = True #Отправка в чат сообщения ниже. Код работает по такому принципу: есть контекст (история чата), а есть сообщение юзера. Если True, то сообщением отправляется заглушка ниже, если False, то отправляется последнее сообщение в таверне - джейл/ответ бота/ответ пользователя.
|
USER_MESSAGE_WORKAROUND = True #Отправка в чат сообщения ниже. Код работает по такому принципу: есть контекст (история чата), а есть сообщение юзера. Если True, то сообщением отправляется заглушка ниже, если False, то отправляется последнее сообщение в таверне - джейл/ответ бота/ответ пользователя.
|
||||||
USER_MESSAGE = "Respond to the text above." #Отправляемая заглушка
|
USER_MESSAGE = "Respond to the text above." #Отправляемая заглушка
|
||||||
REDIRECT_PROXY = "https://api.openai.com/v1/chat/completions"
|
REDIRECT_PROXY = "https://mysteryman63453121-hope.hf.space/proxy/openai"
|
||||||
REDIRECT_API_KEY = ""
|
REDIRECT_API_KEY = ""
|
||||||
REDIRECT_API_MODEL = "gpt-3.5-turbo" # gpt-3.5-turbo / gpt-3.5-turbo-0301 / gpt-4 / gpt-4-0314 / gpt-4-32k
|
REDIRECT_API_MODEL = "gpt-3.5-turbo" # gpt-3.5-turbo / gpt-3.5-turbo-0301 / gpt-4 / gpt-4-0314 / gpt-4-32k
|
||||||
REDIRECT_COMMAND = "Make the text above use less pronouns. Keep asterisks and quotes, it's markup."
|
REDIRECT_COMMAND = "Make the text above use less pronouns. Keep asterisks and quotes, it's markup."
|
||||||
|
REDIRECT_TEMPERATURE = 0.9
|
||||||
|
REDIRECT_USE_CONTEXT = True
|
||||||
|
REDIRECT_CONTEXT_TOKENS = 4095
|
23
main.py
23
main.py
|
@ -31,6 +31,9 @@ REDIRECT_PROXY = config.REDIRECT_PROXY
|
||||||
REDIRECT_API_KEY = config.REDIRECT_API_KEY
|
REDIRECT_API_KEY = config.REDIRECT_API_KEY
|
||||||
REDIRECT_API_MODEL = config.REDIRECT_API_MODEL
|
REDIRECT_API_MODEL = config.REDIRECT_API_MODEL
|
||||||
REDIRECT_COMMAND = config.REDIRECT_COMMAND
|
REDIRECT_COMMAND = config.REDIRECT_COMMAND
|
||||||
|
REDIRECT_TEMPERATURE = config.REDIRECT_TEMPERATURE
|
||||||
|
REDIRECT_USE_CONTEXT = config.REDIRECT_USE_CONTEXT
|
||||||
|
REDIRECT_CONTEXT_TOKENS = config.REDIRECT_CONTEXT_TOKENS
|
||||||
|
|
||||||
try:
|
try:
|
||||||
cookies = json.loads(open(f"./{COOKIE_NAME}", encoding="utf-8").read())
|
cookies = json.loads(open(f"./{COOKIE_NAME}", encoding="utf-8").read())
|
||||||
|
@ -385,11 +388,18 @@ class SSEHandler(web.View):
|
||||||
print(f"Токенов всего: {tokens_total}")
|
print(f"Токенов всего: {tokens_total}")
|
||||||
if redirect:
|
if redirect:
|
||||||
async with aiohttp.ClientSession() as session:
|
async with aiohttp.ClientSession() as session:
|
||||||
|
messages_token_count = len(encoding.encode(f"{self.fullResponse}\n\n{REDIRECT_COMMAND}"))
|
||||||
|
redirect_messages = [{"role": "user", "content": f"{self.fullResponse}\n\n{REDIRECT_COMMAND}"}]
|
||||||
|
if REDIRECT_USE_CONTEXT:
|
||||||
|
for message in reversed(messages):
|
||||||
|
if (messages_token_count + len(message["content"])) > REDIRECT_CONTEXT_TOKENS: break
|
||||||
|
messages_token_count += len(message["content"])
|
||||||
|
redirect_messages.insert(0, message)
|
||||||
headers = {"Content-Type": "application/json","Authorization": f"Bearer {REDIRECT_API_KEY}"}
|
headers = {"Content-Type": "application/json","Authorization": f"Bearer {REDIRECT_API_KEY}"}
|
||||||
body = {
|
body = {
|
||||||
"model": REDIRECT_API_MODEL,
|
"model": REDIRECT_API_MODEL,
|
||||||
"messages": [{"role": "user", "content": f"{self.fullResponse}\n\n{REDIRECT_COMMAND}"}],
|
"messages": redirect_messages,
|
||||||
"temperature": 0.7,
|
"temperature": REDIRECT_TEMPERATURE,
|
||||||
"stream": stream
|
"stream": stream
|
||||||
}
|
}
|
||||||
if REDIRECT_PROXY.endswith("v1/chat/completions") or REDIRECT_PROXY.endswith("v1/chat/completions/"):
|
if REDIRECT_PROXY.endswith("v1/chat/completions") or REDIRECT_PROXY.endswith("v1/chat/completions/"):
|
||||||
|
@ -400,7 +410,14 @@ class SSEHandler(web.View):
|
||||||
url = f"{REDIRECT_PROXY}/v1/chat/completions"
|
url = f"{REDIRECT_PROXY}/v1/chat/completions"
|
||||||
async with session.post(url, headers=headers, json=body) as response:
|
async with session.post(url, headers=headers, json=body) as response:
|
||||||
async for chunk in response.content.iter_chunked(1024):
|
async for chunk in response.content.iter_chunked(1024):
|
||||||
await self.response.write(chunk)
|
chunk_str = chunk.decode("utf-8")
|
||||||
|
if stream and not chunk_str.startswith("data: ") and chunk_str != "\n: joining queue\n\n":
|
||||||
|
oai_response = prepare_response(self.id, self.created, content="```\n" + chunk_str + "\n```", end=True, done=True, stream=True)
|
||||||
|
await self.response.write(oai_response)
|
||||||
|
elif not stream and not "choices" in json.loads(chunk.decode("utf-8")) and chunk.decode("utf-8") != "\n: joining queue\n\n":
|
||||||
|
oai_response = prepare_response(self.id, self.created, content="```\n" + chunk_str + "\n```", stream=False)
|
||||||
|
await self.response.write(oai_response)
|
||||||
|
else: await self.response.write(chunk)
|
||||||
else:
|
else:
|
||||||
if stream:
|
if stream:
|
||||||
await self.response.write(b"data: " + json.dumps({
|
await self.response.write(b"data: " + json.dumps({
|
||||||
|
|
Loading…
Reference in New Issue