Langchain-Chatchat/markdown_docs/server/llm_api_stale.md

6.9 KiB
Raw Blame History

FunctionDef string_args(args, args_list)

string_args: 此函数的功能是将参数对象中的键值对转换成字符串格式,以便在命令行中使用。

参数:

  • args: 包含参数的对象,此对象应具备一个名为 _get_kwargs 的方法,该方法返回对象中所有键值对的迭代器。
  • args_list: 一个字符串列表,指定需要转换为字符串的参数键名。

代码描述: string_args 函数接受两个参数:argsargs_listargs 是一个对象,它通过 _get_kwargs 方法提供了一系列的键值对。args_list 是一个字符串列表,指定了需要包含在最终字符串中的参数键名。

函数首先初始化一个空字符串 args_str,用于累积最终的参数字符串。然后,它遍历 args 对象的键值对。对于每个键值对,函数首先将键名中的下划线 (_) 替换为短横线 (-),因为命令行参数通常使用短横线而不是下划线。接着,函数检查处理后的键名是否在 args_list 中指定的参数列表里。如果不在,则跳过当前键值对,不将其加入到最终的字符串中。

对于需要处理的键值对,如果键名是 porthost,则去除键名中的前缀,只保留 porthost。这是因为在某些上下文中,如 fastchatporthost 参数可能不需要前缀。

接下来,函数根据值的类型构建参数字符串。对于布尔值 True,只需添加键名前缀为 -- 的参数;对于列表、元组或集合,将值转换为以空格分隔的字符串;对于其他类型的值,直接将键值对转换为字符串格式,并加入到 args_str 中。

最后,函数返回构建好的参数字符串 args_str

在项目中的调用关系: string_args 函数在项目中被多个地方调用,包括 launch_workerlaunch_alllaunch_apilaunch_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 函数,将 argsworker_args 转换为字符串格式的命令行参数。这些参数将用于构建启动工作进程的 shell 命令。base_launch_shbase_check_sh 是两个格式化字符串,分别用于生成启动和检查工作进程的 shell 命令。这些命令通过 subprocess.run 函数执行,以实际启动和检查工作进程。

注意:

  • 确保 item 参数的格式正确,即包含模型路径、工作进程主机和端口,且以 "@" 分隔。
  • args 对象应包含所有必要的参数,并且应具有 _get_kwargs 方法,以便 string_args 函数能够正确处理。
  • worker_args 应为一个列表,包含了需要转换为命令行参数的键名。
  • 此函数依赖于外部定义的 base_launch_shbase_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_argsworker_argsserver_args 列表应仔细配置,确保包含启动相应组件所需的所有参数键名。
  • launch_worker 函数的调用依赖于 args.model_path_address 的格式和内容,如果有多个模型路径,请确保它是一个列表或元组。
  • 此函数涉及到多个外部依赖(如 base_launch_shbase_check_shLOG_PATH),请确保这些依赖在调用函数前已正确定义和初始化。
  • 启动过程中可能需要一定时间特别是工作进程的启动可能需要3-10分钟不等请耐心等待。
  • 函数中的日志信息同时使用了中英文,以适应不同用户的需求。