diff --git a/config.yaml b/config.yaml index 6763ee54..9fbb78d5 100644 --- a/config.yaml +++ b/config.yaml @@ -147,6 +147,12 @@ LLM: user_id: 你的user_id base_url: "https://api.coze.cn/open_api/v2/chat" # 服务地址 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: # 定义LLM API类型 type: homeassistant diff --git a/core/providers/llm/openai/openai.py b/core/providers/llm/openai/openai.py index e574d50d..e060248f 100644 --- a/core/providers/llm/openai/openai.py +++ b/core/providers/llm/openai/openai.py @@ -25,12 +25,25 @@ class LLMProvider(LLMProviderBase): messages=dialogue, stream=True ) + + is_active = True for chunk in responses: - # 检查是否存在有效的choice且content不为空 - if chunk.choices and len(chunk.choices) > 0: - delta = chunk.choices[0].delta - content = getattr(delta, 'content', '') - if content: # 仅在content非空时生成 + try: + # 检查是否存在有效的choice且content不为空 + delta = chunk.choices[0].delta if getattr(chunk, 'choices', None) else None + content = delta.content if hasattr(delta, 'content') else '' + except IndexError: + content = '' + if content: + # 处理标签跨多个chunk的情况 + if '' in content: + is_active = False + content = content.split('')[0] + if '' in content: + is_active = True + content = content.split('')[-1] + if is_active: yield content + except Exception as e: logger.bind(tag=TAG).error(f"Error in response generation: {e}")