Fix ollama

This commit is contained in:
Nexus 2023-11-10 23:36:18 +00:00
parent 0f9fc8b7b9
commit 13322ad134
Signed by: nex
GPG key ID: 0FA334385D0B689F

View file

@ -90,24 +90,12 @@ except Exception as _pyttsx3_err:
async def ollama_stream_reader(response: httpx.Response) -> typing.AsyncGenerator[ async def ollama_stream_reader(response: httpx.Response) -> typing.AsyncGenerator[
dict[str, str | int | bool], None dict[str, str | int | bool], None
]: ]:
_buffer = b"" async for chunk in response.aiter_bytes(8192):
async for char in response.aiter_bytes(1): # Each chunk is a JSON string
while not _buffer.endswith(b"\n"): try:
_buffer += char yield json.loads(chunk.strip().decode("utf-8", "replace"))
print( except json.JSONDecodeError:
"Read {:,} bytes ({!r}) in chunk for a total of {:,} bytes in buffer ({!r}).".format( pass
len(char),
char,
len(_buffer),
_buffer
)
)
_buffer = _buffer.rstrip()
print("[ollama stream reader] Resolving %r" % (_buffer.decode()))
chunk = json.loads(_buffer.decode("utf-8", "replace"))
print("[ollama stream reader] %r -> %r" % (_buffer.decode(), chunk))
yield chunk
_buffer = b""
def format_autocomplete(ctx: discord.AutocompleteContext): def format_autocomplete(ctx: discord.AutocompleteContext):
@ -1894,10 +1882,10 @@ class OtherCog(commands.Cog):
content = "Response is still being generated..." content = "Response is still being generated..."
if chunk["done"] is True: if chunk["done"] is True:
content = None content = None
output.description = chunk["response"] output.description += chunk["response"]
if (time() - last_edit) >= 5 or chunk["done"] is True: if (time() - last_edit) >= 5 or chunk["done"] is True:
await msg.edit(content=content, embed=output) await msg.edit(content=content, embed=output)
break await msg.edit(content=None, embed=output)
def setup(bot): def setup(bot):