Langchain-Chatchat/markdown_docs/server/llm_api_stale.md

73 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## FunctionDef string_args(args, args_list)
**string_args**: 此函数的功能是将参数对象中的键值对转换成字符串格式,以便在命令行中使用。
**参数**:
- args: 包含参数的对象,此对象应具备一个名为 `_get_kwargs` 的方法,该方法返回对象中所有键值对的迭代器。
- args_list: 一个字符串列表,指定需要转换为字符串的参数键名。
**代码描述**:
`string_args` 函数接受两个参数:`args` 和 `args_list`。`args` 是一个对象,它通过 `_get_kwargs` 方法提供了一系列的键值对。`args_list` 是一个字符串列表,指定了需要包含在最终字符串中的参数键名。
函数首先初始化一个空字符串 `args_str`,用于累积最终的参数字符串。然后,它遍历 `args` 对象的键值对。对于每个键值对,函数首先将键名中的下划线 (`_`) 替换为短横线 (`-`),因为命令行参数通常使用短横线而不是下划线。接着,函数检查处理后的键名是否在 `args_list` 中指定的参数列表里。如果不在,则跳过当前键值对,不将其加入到最终的字符串中。
对于需要处理的键值对,如果键名是 `port``host`,则去除键名中的前缀,只保留 `port``host`。这是因为在某些上下文中,如 `fastchat``port` 和 `host` 参数可能不需要前缀。
接下来,函数根据值的类型构建参数字符串。对于布尔值 `True`,只需添加键名前缀为 `--` 的参数;对于列表、元组或集合,将值转换为以空格分隔的字符串;对于其他类型的值,直接将键值对转换为字符串格式,并加入到 `args_str` 中。
最后,函数返回构建好的参数字符串 `args_str`
**在项目中的调用关系**:
`string_args` 函数在项目中被多个地方调用,包括 `launch_worker`、`launch_all`、`launch_api` 和 `launch_webui` 函数。这些调用点传递不同的参数对象和参数列表给 `string_args` 函数,以生成特定上下文中所需的命令行参数字符串。这表明 `string_args` 函数在项目中扮演着构建命令行参数字符串的核心角色,为启动不同的服务组件提供支持。
**注意**:
- 确保传递给 `string_args` 函数的 `args` 对象具有 `_get_kwargs` 方法。
- 在使用 `string_args` 函数时,应仔细定义 `args_list`,确保只包含需要转换为命令行参数的键名。
**输出示例**:
假设 `args` 对象包含 `{ 'model_path': 'path/to/model', 'worker_host': 'localhost', 'worker_port': 8080, 'use_ssl': True }`,且 `args_list``['model-path', 'worker-host', 'worker-port', 'use-ssl']`,则 `string_args` 函数的输出可能为:
```
--model path/to/model --host localhost --port 8080 --ssl
```
## FunctionDef launch_worker(item, args, worker_args)
**launch_worker**: 此函数的功能是启动一个工作进程。
**参数**:
- item: 一个字符串,包含模型路径、工作进程主机和端口的组合,格式为"model-path@worker-host@worker-port"。
- args: 一个对象,包含了启动工作进程所需的各种参数。
- worker_args: 一个列表,指定了需要转换为字符串的工作进程参数键名。
**代码描述**:
`launch_worker` 函数首先通过对 `item` 参数进行分割,提取出模型路径、工作进程主机和端口,然后构建工作进程的地址。接着,函数打印一条消息,提示用户如果工作进程长时间未启动,可以查看日志文件以获取更多信息。此日志文件的名称是基于 `item` 参数生成的,其中的特殊字符会被替换以确保文件名的有效性。
函数随后调用 `string_args` 函数,将 `args``worker_args` 转换为字符串格式的命令行参数。这些参数将用于构建启动工作进程的 shell 命令。`base_launch_sh` 和 `base_check_sh` 是两个格式化字符串,分别用于生成启动和检查工作进程的 shell 命令。这些命令通过 `subprocess.run` 函数执行,以实际启动和检查工作进程。
**注意**:
- 确保 `item` 参数的格式正确,即包含模型路径、工作进程主机和端口,且以 "@" 分隔。
- `args` 对象应包含所有必要的参数,并且应具有 `_get_kwargs` 方法,以便 `string_args` 函数能够正确处理。
- `worker_args` 应为一个列表,包含了需要转换为命令行参数的键名。
- 此函数依赖于外部定义的 `base_launch_sh``base_check_sh` 格式化字符串,以及 `LOG_PATH` 常量,确保这些依赖在调用函数前已正确定义和初始化。
- 使用此函数时,应注意检查相关日志文件,以便在出现问题时能够迅速定位和解决。
## FunctionDef launch_all(args, controller_args, worker_args, server_args)
**launch_all**: 此函数的功能是启动整个LLM服务包括控制器、工作进程和服务器。
**参数**:
- args: 包含启动服务所需的各种参数的对象。
- controller_args: 控制器启动所需的参数列表。
- worker_args: 工作进程启动所需的参数列表。
- server_args: 服务器启动所需的参数列表。
**代码描述**:
`launch_all` 函数首先打印日志路径信息提示用户LLM服务正在启动并且可以在指定的日志路径下监控各模块的日志。接着函数使用 `string_args` 函数将 `args` 对象和 `controller_args` 列表转换为字符串格式的命令行参数,用于构建启动控制器的 shell 命令。这些命令通过 `subprocess.run` 函数执行,以实际启动控制器并检查其运行状态。
对于工作进程的启动,函数首先判断 `args.model_path_address` 是否为字符串。如果是,直接调用 `launch_worker` 函数启动单个工作进程。如果不是,说明有多个模型路径,函数将遍历这些路径,并对每个路径调用 `launch_worker` 函数启动对应的工作进程。
最后,函数同样使用 `string_args` 函数将 `args` 对象和 `server_args` 列表转换为字符串格式的命令行参数,用于构建启动服务器的 shell 命令。这些命令通过 `subprocess.run` 函数执行以实际启动服务器并检查其运行状态。函数结束时打印消息提示LLM服务启动完毕。
**注意**:
- 确保传递给 `launch_all` 函数的 `args` 对象包含所有必要的参数,并且这些参数正确无误。
- `controller_args`、`worker_args` 和 `server_args` 列表应仔细配置,确保包含启动相应组件所需的所有参数键名。
- `launch_worker` 函数的调用依赖于 `args.model_path_address` 的格式和内容,如果有多个模型路径,请确保它是一个列表或元组。
- 此函数涉及到多个外部依赖(如 `base_launch_sh`、`base_check_sh` 和 `LOG_PATH`),请确保这些依赖在调用函数前已正确定义和初始化。
- 启动过程中可能需要一定时间特别是工作进程的启动可能需要3-10分钟不等请耐心等待。
- 函数中的日志信息同时使用了中英文,以适应不同用户的需求。