mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-27 01:23:55 +08:00
* 跳过使用Open ai 接口时,DeepSeek-R1 模型的深度思考内容 (#54) * 跳过 DeepSeek-R1 模型的深度思考内容 * 跳过 DeepSeek-R1 模型的深度思考内容 * 新增LM Studio本地大模型API接口 * 优化代码,遇到Bad Case安全处理 * update:优化 --------- Co-authored-by: Sinyo <38577585+SinyoWong@users.noreply.github.com> Co-authored-by: hrz <1710360675@qq.com>
This commit is contained in:
@@ -147,6 +147,12 @@ LLM:
|
|||||||
user_id: 你的user_id
|
user_id: 你的user_id
|
||||||
base_url: "https://api.coze.cn/open_api/v2/chat" # 服务地址
|
base_url: "https://api.coze.cn/open_api/v2/chat" # 服务地址
|
||||||
personal_access_token: 你的coze个人令牌
|
personal_access_token: 你的coze个人令牌
|
||||||
|
LMStudioLLM:
|
||||||
|
# 定义LLM API类型
|
||||||
|
type: openai
|
||||||
|
model_name: deepseek-r1-distill-llama-8b@q4_k_m # 使用的模型名称,需要预先在社区下载
|
||||||
|
url: http://localhost:1234/v1 # LM Studio服务地址
|
||||||
|
api_key: lm-studio # LM Studio服务的固定API Key
|
||||||
HomeAssistant:
|
HomeAssistant:
|
||||||
# 定义LLM API类型
|
# 定义LLM API类型
|
||||||
type: homeassistant
|
type: homeassistant
|
||||||
|
|||||||
@@ -25,12 +25,25 @@ class LLMProvider(LLMProviderBase):
|
|||||||
messages=dialogue,
|
messages=dialogue,
|
||||||
stream=True
|
stream=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
is_active = True
|
||||||
for chunk in responses:
|
for chunk in responses:
|
||||||
# 检查是否存在有效的choice且content不为空
|
try:
|
||||||
if chunk.choices and len(chunk.choices) > 0:
|
# 检查是否存在有效的choice且content不为空
|
||||||
delta = chunk.choices[0].delta
|
delta = chunk.choices[0].delta if getattr(chunk, 'choices', None) else None
|
||||||
content = getattr(delta, 'content', '')
|
content = delta.content if hasattr(delta, 'content') else ''
|
||||||
if content: # 仅在content非空时生成
|
except IndexError:
|
||||||
|
content = ''
|
||||||
|
if content:
|
||||||
|
# 处理标签跨多个chunk的情况
|
||||||
|
if '<think>' in content:
|
||||||
|
is_active = False
|
||||||
|
content = content.split('<think>')[0]
|
||||||
|
if '</think>' in content:
|
||||||
|
is_active = True
|
||||||
|
content = content.split('</think>')[-1]
|
||||||
|
if is_active:
|
||||||
yield content
|
yield content
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.bind(tag=TAG).error(f"Error in response generation: {e}")
|
logger.bind(tag=TAG).error(f"Error in response generation: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user