Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
75d6b2b
Add support for Qwen3
Doraemonwei May 12, 2025
729eab7
Merge pull request #11 from Doraemonwei/main
TianqiYe May 12, 2025
fcdcadb
(Qwen3 update) adapt Qwen3 model
TianqiYe May 12, 2025
ca9601f
(llm hyperparam tune) added min_p, increased repeat penalty to 1.5
TianqiYe May 12, 2025
009ebd9
(llm_client bugfix) patch for the fix introduced in last commit
TianqiYe May 12, 2025
eff3065
(non-fixed) align message definition with QwenAgent
TianqiYe May 13, 2025
73c4d36
(function parser) update json to json5, added way to dump parsing error
TianqiYe May 14, 2025
15909d4
(llm client) remove ai slop
TianqiYe May 14, 2025
49b282d
(mcp client) added parser error and tool execution error handle
TianqiYe May 14, 2025
e3caee7
(processor) added parser error and tool execution error message, clea…
TianqiYe May 14, 2025
790f64d
(llm server) added tool_calls to Message class
TianqiYe May 14, 2025
ca4aa8c
(version) cleanup
TianqiYe May 14, 2025
5af31c1
(logger - DEBUG) added debug level for llm server
TianqiYe May 14, 2025
9465875
Add support for Qwen3
Doraemonwei May 14, 2025
d2b770d
(llm server) introduce model specific cache
TianqiYe May 15, 2025
90b409d
(default config json) adjust setting for Qwen 3
TianqiYe May 15, 2025
c90211c
(default config json) adjust setting for Qwen 3 / correction
TianqiYe May 15, 2025
5b380a3
Merge branch 'Pamir-AI:main' into main
Doraemonwei May 15, 2025
327bbec
parakeet (Temp)
Doraemonwei May 20, 2025
c6b69eb
Merge remote-tracking branch 'origin/main'
Doraemonwei May 20, 2025
18e3906
add wake word and expire time
Doraemonwei May 20, 2025
1b6ad4a
Merge branch 'refs/heads/feature-branch'
Doraemonwei May 21, 2025
15a7d24
Fix(client): Parse tool call parameters
Doraemonwei May 21, 2025
5c903d3
Merge remote-tracking branch 'origin/main'
Doraemonwei May 21, 2025
61adf22
chore(git): Add the vendor/sdk submodule.
Doraemonwei May 22, 2025
65f3421
Merge remote-tracking branch 'origin/main'
Doraemonwei May 26, 2025
1ad1900
revert(sdk): remove sdk sub module
Doraemonwei May 26, 2025
6802d85
chore(mcp-server): Change the led-use server to an uv project
Doraemonwei May 27, 2025
eb55d5c
chore(utils): Optimize the config to adapt to the UV project version …
Doraemonwei May 27, 2025
cf64831
chore(client): uv adapt
Doraemonwei May 27, 2025
735df64
chore(client): uv adapt
Doraemonwei May 27, 2025
105f954
chore(utils): uv adapt, get server name by mcp-server dir name
Doraemonwei May 27, 2025
91f323e
chore(mcp-server): uv adapt of tts-use server
Doraemonwei May 27, 2025
149afad
chore(mcp-server): uv adapt of tts-use server
Doraemonwei May 27, 2025
731f38c
chore(mcp-server): uv adapt of wifi-use server
Doraemonwei May 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "vendor/sdk"]
path = vendor/sdk
url = https://github.com/Pamir-AI/distiller-cm5-sdk.git
21 changes: 4 additions & 17 deletions distiller_cm5_python/client/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
MODEL_NAME,
TIMEOUT,
LOGGING_LEVEL,
MCP_SERVER_SCRIPT_PATH,
ACTIVE_MCP_SERVER,
API_KEY,
)
from distiller_cm5_python.utils.distiller_exception import (
Expand Down Expand Up @@ -242,11 +242,7 @@ def get_transcription_sync(data):

def parse_arguments():
parser = argparse.ArgumentParser(description="MCP Client CLI")
parser.add_argument(
"--server-script",
default=MCP_SERVER_SCRIPT_PATH,
help="Path to the MCP server script (e.g., ../server/server.py)",
)

parser.add_argument(
"--stream",
action=argparse.BooleanOptionalAction,
Expand Down Expand Up @@ -289,16 +285,7 @@ async def main():
# Log the effective level
logger.info(f"Log level set to: {args.log_level}") # This logger is now configured

# Make server script path absolute, default to MCP_SERVER_SCRIPT_PATH
server_script_path = os.path.abspath(args.server_script)
if not os.path.exists(server_script_path):
logger.error(f"Server script not found at: {server_script_path}")
print(
f"{Fore.RED}Error: Server script not found at '{server_script_path}'. Please provide a valid path.{Style.RESET_ALL}"
)
sys.exit(1)

logger.info(f"Using server script: {server_script_path}")
# Make mcp-server server dir exist

# Initialize event dispatcher and handler
event_handler = CLIEventHandler()
Expand Down Expand Up @@ -352,7 +339,7 @@ async def main():

try:
logger.info("Connecting to MCP server...")
connected = await client.connect_to_server(server_script_path)
connected = await client.connect_to_server(ACTIVE_MCP_SERVER)
if not connected:
logger.error("Failed to connect to the MCP server.")
print(
Expand Down
15 changes: 11 additions & 4 deletions distiller_cm5_python/client/mid_layer/llm_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -690,6 +690,8 @@ async def get_chat_completion_response(
if "tool_calls" in message and message["tool_calls"]:
logger.debug("Found tool calls directly in response message object.")
tool_calls = message["tool_calls"]
if isinstance(tool_calls[0]['function']['arguments'], str):
tool_calls[0]['function']['arguments'] = json.loads(tool_calls[0]['function']['arguments'])
elif (
isinstance(full_response_content, str)
and "<tool_call>" in full_response_content
Expand Down Expand Up @@ -995,11 +997,16 @@ async def get_chat_completion_streaming_response(
else:
self._emit_success(dispatcher, str(uuid.uuid4()), EventType.MESSAGE, "tool call parsing failed, please retry")

logger.info(
f"LLMClient.get_chat_completion_streaming_response: Processed result. Content length: {len(full_response_content)}, Tool calls: {len(final_tool_calls)}"
)
logger.info(
f"LLMClient.get_chat_completion_streaming_response: Processed result. Content length: {len(full_response_content)}, Tool calls: {len(final_tool_calls)}"
)
else:

logger.debug("Found tool calls directly in response message object.")

if len(final_tool_calls)>0 and isinstance(final_tool_calls[0]['function']['arguments'], str):
final_tool_calls[0]['function']['arguments'] = json.loads(final_tool_calls[0]['function']['arguments'])


return {
"message": {
"content": full_response_content,
Expand Down
13 changes: 7 additions & 6 deletions distiller_cm5_python/client/mid_layer/mcp_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
PROVIDER_TYPE,
MODEL_NAME,
TIMEOUT,
MCP_SERVERS
)
from contextlib import AsyncExitStack

Expand Down Expand Up @@ -105,15 +106,15 @@ def __init__(

self.dispatcher = dispatcher

async def connect_to_server(self, server_script_path: str) -> bool:
async def connect_to_server(self, active_mcp_server: str) -> bool:
"""Connect to an MCP server"""

if not server_script_path.endswith(".py"):
raise UserVisibleError("Server script must be a .py file")
logger.debug(f"Connecting to server: {active_mcp_server}")

# use current python interpreter by default
server_params = StdioServerParameters(
command=sys.executable, args=[server_script_path], env=None
command=MCP_SERVERS.get(active_mcp_server).get("command", None),
args=MCP_SERVERS.get(active_mcp_server).get("args", None),
env=MCP_SERVERS.get(active_mcp_server).get("env", None),
)

try:
Expand All @@ -139,7 +140,7 @@ async def connect_to_server(self, server_script_path: str) -> bool:
if self.server_name == "cli":
from distiller_cm5_python.utils.server_utils import extract_server_name

self.server_name = extract_server_name(server_script_path)
self.server_name = extract_server_name(active_mcp_server)
logger.debug(f"Using extracted server name: {self.server_name}")

end_time = time.time()
Expand Down
1 change: 1 addition & 0 deletions distiller_cm5_python/mcp_server/led_use/.python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.12
Empty file.
10 changes: 10 additions & 0 deletions distiller_cm5_python/mcp_server/led_use/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[project]
name = "led-use"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"mcp>=1.9.1",
"nest-asyncio>=1.6.0",
]
Loading