Добавление контекста в переброс

This commit is contained in:
Barbariskaa 2023-06-03 09:29:03 +03:00 committed by GitHub
parent b02fde3fcd
commit 8bde017a31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 6 deletions

View File

@ -8,7 +8,10 @@ MARKUP_FIX = True #Фикс потерянных кавычек и звездо
COOKIE_NAME = "cookies.json"
USER_MESSAGE_WORKAROUND = True #Отправка в чат сообщения ниже. Код работает по такому принципу: есть контекст (история чата), а есть сообщение юзера. Если True, то сообщением отправляется заглушка ниже, если False, то отправляется последнее сообщение в таверне - джейл/ответ бота/ответ пользователя.
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_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

25
main.py
View File

@ -31,6 +31,9 @@ REDIRECT_PROXY = config.REDIRECT_PROXY
REDIRECT_API_KEY = config.REDIRECT_API_KEY
REDIRECT_API_MODEL = config.REDIRECT_API_MODEL
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:
cookies = json.loads(open(f"./{COOKIE_NAME}", encoding="utf-8").read())
@ -385,11 +388,18 @@ class SSEHandler(web.View):
print(f"Токенов всего: {tokens_total}")
if redirect:
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}"}
body = {
"model": REDIRECT_API_MODEL,
"messages": [{"role": "user", "content": f"{self.fullResponse}\n\n{REDIRECT_COMMAND}"}],
"temperature": 0.7,
"messages": redirect_messages,
"temperature": REDIRECT_TEMPERATURE,
"stream": stream
}
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"
async with session.post(url, headers=headers, json=body) as response:
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:
if stream:
await self.response.write(b"data: " + json.dumps({
@ -482,4 +499,4 @@ if __name__ == '__main__':
f"Режим balanced: http://{HOST}:{PORT}/balanced\n"
f"Есть режим подсказок от Бинга. Чтобы его включить, нужно добавить /suggestion после выбранного режима.\n"
f"И еще есть режим переброса, нужный для того чтобы победить шиканье креативной Сидни. Включается добавлением /redirect после режима.")
web.run_app(app, host=HOST, port=PORT, print=None)
web.run_app(app, host=HOST, port=PORT, print=None)