Langchain-Chatchat/server/chat/utils.py

31 lines
803 B
Python
Raw Normal View History

2023-07-27 23:22:07 +08:00
import asyncio
from typing import Awaitable
2023-08-08 23:54:51 +08:00
from pydantic import BaseModel, Field
2023-07-27 23:22:07 +08:00
async def wrap_done(fn: Awaitable, event: asyncio.Event):
"""Wrap an awaitable with a event to signal when it's done or an exception is raised."""
try:
await fn
except Exception as e:
# TODO: handle exception
print(f"Caught exception: {e}")
finally:
# Signal the aiter to stop.
2023-08-08 23:54:51 +08:00
event.set()
class History(BaseModel):
"""
对话历史
可从dict生成
h = History(**{"role":"user","content":"你好"})
也可转换为tuple
h.to_msy_tuple = ("human", "你好")
"""
role: str = Field(...)
content: str = Field(...)
def to_msg_tuple(self):
return "ai" if self.role=="assistant" else "human", self.content