IDE 调试
下面以 VS Code 为例,介绍如何调试基于 Python 创建的对话树(Xmind 对话树没法调试)
调试准备
- 通过 VS Code 登录时,文件夹选择 TeliChatSecRun
- 需要安装 Python、Pylance、Python Debugger、Python Environments 等 VS Code 插件
- 正确选择 VS Code 的 Python 解释器,特别是有各种 Pyhton 虚拟环境时
- 将如下内容加入 VS Code 的 launch.json 文件中(在 TeliChatSecRun/.vscode 目录下,如果没有则需要先创建该文件):
{
"version": "0.2.0",
"configurations": [
{
"name": "WEB",
"type": "debugpy",
"request": "launch",
"program": "./web.py",
"justMyCode": true,
"console": "integratedTerminal",
"envFile" : "${workspaceFolder}/env.txt",
"args" : [ "port=8080" ]
},
{
"name": "API",
"type": "debugpy",
"request": "launch",
"program": "./api.py",
"justMyCode": true,
"console": "integratedTerminal",
"envFile" : "${workspaceFolder}/env.txt",
"args" : [ "start_port=8000","gpu_index=0","LLMT=PUBLIC" ]
},
]
}
- 同时还需在 TeliChatSecRun 目录下创建 env.txt 文件,内容如下(根据实际情况修改):
DOUBAO_APIKEY=...
QWEN_APIKEY=...
-
启动调试前,如果有 Python 虚拟环境则在终端中也要激活该虚拟环境,然后再启动调试;启动调试时,要使用 VS Code 左侧的 “运行和调试”,分别启动其中的 “WEB” 和 “API” 选项
-
在相应的 Python 文件(包括 Python 对话文件以及被 import 的其它 Python 文件)中设置断点即可,断点中断时可以查看 Python 变量(特别是通过 ctx 参数变量查看信息项的内容,具体参见 “Python 脚本/函数”)
节点调试函数
(仅适用于 Python 对话树)
- Python 对话树的 所有节点 都有两个特殊的函数属性 “执行前” 和 “执行后”,这两个属性指向某个函数或直接定义 lambda 表达式,这样就可以在该函数或 lambda 表达式中设置断点,从而实现对某个节点(执行前或执行后)的调试拦截,如:
在 IDE 中调试时,如上所示,可以在 lambda 表达式的
def summarize_info_node_after_execution(ctx):
pass
summarize_info_node = chattree.create_node( "#提示用户#", {
"提示内容":"<根据前面的沟通总结相关的伤情或者病情、具体的地点以及联系电话>",
"执行前" : lambda ctx : (
_:=0
),
"执行后": summarize_info_node_after_execution,
})_:=0行设置断点(注意 如果是 lambda 表达式一定要这种多行形式的,才能设置有效的调试断点),也可以在summarize_info_node_after_execution函数的pass行设置断点