@aleshaykovlev
html, css, js, node, webpack, sass, react

Ошибка json на одном компьютере?

С 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()
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы