С websocket клиента прилетает запрос, который исправен (
{type: "some_type", "payload": {"query": "input value"}}
), и он идет в функцию
work_with_user_request
и в строчке
response = qa_chain({"query": message})
возникает ошибка:
Invalid \uXXXX escape: line 1 column 4246 (char 4245)
. При чем эта ошибка появляется только на одном компьютере, на другом ее нет и все отрабатывает хорошо. Версии Python совпадают (3.11.2), версии пакетов совпадают, переменные среды Path обновил. Переменная
prompt_template
валидна. Что может быть не так?
retriever = vectordb2.as_retriever(search_type="mmr", search_kwargs={
"k": 6, "fetch_k": 50}) # Контекст в 6 релевантных документов
openai = ChatOpenAI(model_name="gpt-4")
# промпт
prompt_template = """На основе предоставленного контекста и случая {some} придумай вопрос длиной строго больше 10 токенов и 2 строго коротких варианта ответа. 1 ответа обязательно неверный. Правильный ответ выпиши. Если не можешь найти информацию в данном контексте скажи, что не знаешь и ничего не придумывай.
Контекст: {context}
Вопрос: {some}
Отвечай как неопытный преподаватель с опытом работы 1 год:
"""
PROMPT = PromptTemplate(
template=prompt_template, input_variables=["context", "some"]
)
# Create the chain to answer questions и добавим промп
chain_type_kwargs = {"prompt": PROMPT}
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0.7),
chain_type="stuff",
retriever=retriever,
chain_type_kwargs=chain_type_kwargs, # промпт
return_source_documents=True
)
def work_with_user_request(message):
try:
response = qa_chain({"query": message})
return response["result"]
except json.decoder.JSONDecodeError as e:
print(f"При отправке ответа произошла ошибка: {e}")
async def response(websocket, path):
print("New connection")
while True:
request_from_client = await websocket.recv() # запрос от клиента
request_from_client_as_obj = json.loads(request_from_client)
type_from_client = request_from_client_as_obj["type"]
response = {"result": "Invalid request"}
# отправка ответа для определенного типа запроса
if type_from_client == "USER-REQUEST":
response["result"] = work_with_user_request(
request_from_client_as_obj["payload"]["query"])
response["current_type"] = type_from_client
# отправка ответа клиенту
await websocket.send(json.dumps(response))
if __name__ == "__main__":
st_ser = websockets.serve(response, "localhost", 8831)
asyncio.get_event_loop().run_until_complete(st_ser)
asyncio.get_event_loop().run_forever()