博客式笑话网站织梦源码,西安市做网站公司有哪些,注册新公司网上核名,wordpress怎么上传高清图片解决方案
把reasoning content的东西移到content中来 并在reasoning时#xff0c;手动加上标签。具体做法是截获第三方api返回的stream#xff0c;并修改其中的内容#xff0c;再移交给open webUI处理。
在backend\open_webui\routers\openai.py中 找到 generate_chat_com…解决方案
把reasoning content的东西移到content中来 并在reasoning时手动加上标签。具体做法是截获第三方api返回的stream并修改其中的内容再移交给open webUI处理。
在backend\open_webui\routers\openai.py中 找到 generate_chat_completion 这个函数 在
r Nonesession Nonestreaming Falseresponse None下方 增加截获函数 这个方案适用于 火山 百炼 vLLM我没试过但是思路是一样的根据vLLM返回的chunk内容把reasoning的部分贴到content中去就能正常显示了。
async def modify_stream_content(original_stream):start_reasoning Trueend_reasoning True# 逐块处理流式内容async for chunk in original_stream:# 示例修改 chunk 内容假设 chunk 是 JSON 字符串try:# 1. 解码字节流为字符串decoded_chunk chunk.decode(utf-8).lstrip(data: ).strip()# 2. 解析 JSON根据实际格式调整chunk_data json.loads(decoded_chunk)# 3. 修改内容if choices in chunk_data and len(chunk_data[choices]) 0:delta chunk_data[choices][0].get(delta, {})# print(delta)if delta[content] None:delta[content] if reasoning_content in delta and delta[reasoning_content] None:delta[reasoning_content] if delta[content] :if start_reasoning:delta[content] think delta[content] delta[reasoning_content]start_reasoning Falseelse:delta[content] delta[content] delta[reasoning_content]else:if end_reasoning:delta[content] /think delta[content]end_reasoning False# print(delta)# 4. 重新编码为字节流modified_chunk fdata: {json.dumps(chunk_data)}\n\n.encode(utf-8)except (json.JSONDecodeError, KeyError) as e:# 处理错误可选记录日志或跳过modified_chunk chunk # 保留原始数据# 5. 返回修改后的 chunkyield modified_chunk在下方if text/event-stream in r.headers.get(Content-Type, ): 分支里。调用截获函数并返回 # Check if response is SSEif text/event-stream in r.headers.get(Content-Type, ):streaming True# 调用截获函数modified_stream modify_stream_content(r.content)return StreamingResponse(# r.content,modified_stream,status_coder.status,headersdict(r.headers),backgroundBackgroundTask(cleanup_response, responser, sessionsession),)