[{"data":1,"prerenderedAt":1837},["ShallowReactive",2],{"navigation":3,"\u002Fllm\u002Flangchain3":144,"\u002Fllm\u002Flangchain3-surround":1832},[4,36,53,86,131],{"title":5,"path":6,"stem":7,"children":8,"icon":35},"Golang","\u002Fgolang","1.golang\u002F1.index",[9,11,15,19,23,27,31],{"title":10,"path":6,"stem":7},"golang-各种golang学习以及使用过程中记录",{"title":12,"path":13,"stem":14},"gopls-官方gopls内置mcp server的基本使用","\u002Fgolang\u002Fgopls_mcp_usages","1.golang\u002F2.gopls_mcp_usages",{"title":16,"path":17,"stem":18},"实践-(一)创建简单的http服务器","\u002Fgolang\u002Fgo_http_simple_server","1.golang\u002F3.go_http_simple_server",{"title":20,"path":21,"stem":22},"wails入门系列(一)环境安装与demo","\u002Fgolang\u002Fwails_start","1.golang\u002F4.wails_start",{"title":24,"path":25,"stem":26},"wails入门系列(二)无边框应用的菜单栏以及窗口拖拽","\u002Fgolang\u002Fwails_frameless","1.golang\u002F5.wails_frameless",{"title":28,"path":29,"stem":30},"go\u002Fredis-redis中大数字自动转换成指数形式的处理","\u002Fgolang\u002Fredis_big_num","1.golang\u002F6.redis_big_num",{"title":32,"path":33,"stem":34},"go\u002F方法记录-局部坐标与世界坐标间的相互转换(位置\u002F方向)","\u002Fgolang\u002Fworld_local_transform","1.golang\u002F7.world_local_transform",false,{"title":37,"icon":35,"path":38,"stem":39,"children":40,"page":35},"瞎折腾","\u002Ftinkering","2.tinkering",[41,45,49],{"title":42,"path":43,"stem":44},"mi50显卡ubuntu运行大模型开坑(一)显卡准备以及驱动安装","\u002Ftinkering\u002Fmi50_gpu_llm_1","2.tinkering\u002F1.mi50_gpu_llm_1",{"title":46,"path":47,"stem":48},"mi50显卡ubuntu运行大模型开坑(二)使用llama.cpp部署Qwen3系列","\u002Ftinkering\u002Fmi50_gpu_llm_2","2.tinkering\u002F2.mi50_gpu_llm_2",{"title":50,"path":51,"stem":52},"mi50显卡ubuntu运行大模型开坑(三)安装风扇并且控制转速","\u002Ftinkering\u002Fmi50_gpu_llm_3","2.tinkering\u002F3.mi50_gpu_llm_3",{"title":54,"icon":35,"path":55,"stem":56,"children":57,"page":35},"LLM","\u002Fllm","3.llm",[58,62,66,70,74,78,82],{"title":59,"path":60,"stem":61},"langchain入门-安装以及初次使用(deepseek api版本)","\u002Fllm\u002Flangchain1","3.llm\u002F01.langchain1",{"title":63,"path":64,"stem":65},"langchain入门-使用langchain调用本地部署的大模型(以llama.cpp以及ollama为例)","\u002Fllm\u002Flangchain2","3.llm\u002F02.langchain2",{"title":67,"path":68,"stem":69},"langchain入门-使用langchain编写一个简单的聊天机器人(DeepSeek API&命令行版本)","\u002Fllm\u002Flangchain3","3.llm\u002F03.langchain3",{"title":71,"path":72,"stem":73},"langchain入门-使用langchain构建一个拥有RAG能力的代码问答应用(DeepSeek API&本地bge-m3&命令行版本)","\u002Fllm\u002Flangchain4","3.llm\u002F04.langchain4",{"title":75,"path":76,"stem":77},"golang\u002Feino eino框架的基础使用 Message以及ChatModel入门","\u002Fllm\u002Feino1","3.llm\u002F05.eino1",{"title":79,"path":80,"stem":81},"golang\u002Feino eino框架的基础使用 在ChatModel中使用工具","\u002Fllm\u002Feino2","3.llm\u002F06.eino2",{"title":83,"path":84,"stem":85},"llm\u002Fagent agent-zero初步搭建与使用","\u002Fllm\u002Fagent_zero_start","3.llm\u002F07.agent_zero_start",{"title":87,"icon":35,"path":88,"stem":89,"children":90,"page":35},"Verilog","\u002Fverilog","4.verilog",[91,95,99,103,107,111,115,119,123,127],{"title":92,"path":93,"stem":94},"31条指令单周期cpu设计(Verilog)-(一)相关软件","\u002Fverilog\u002Fmips1","4.verilog\u002F01.mips1",{"title":96,"path":97,"stem":98},"31条指令单周期cpu设计(Verilog)-(二)总体设计","\u002Fverilog\u002Fmips2","4.verilog\u002F02.mips2",{"title":100,"path":101,"stem":102},"31条指令单周期cpu设计(Verilog)-(三)指令分析","\u002Fverilog\u002Fmips3","4.verilog\u002F03.mips3",{"title":104,"path":105,"stem":106},"31条指令单周期cpu设计(Verilog)-(四)数据输入输出关系表","\u002Fverilog\u002Fmips4","4.verilog\u002F04.mips4",{"title":108,"path":109,"stem":110},"31条指令单周期cpu设计(Verilog)-(五)整体数据通路图设计","\u002Fverilog\u002Fmips5","4.verilog\u002F05.mips5",{"title":112,"path":113,"stem":114},"31条指令单周期cpu设计(Verilog)-(六)指令操作时间表设计","\u002Fverilog\u002Fmips6","4.verilog\u002F06.mips6",{"title":116,"path":117,"stem":118},"31条指令单周期cpu设计(Verilog)-(七)整体代码结构","\u002Fverilog\u002Fmips7","4.verilog\u002F07.mips7",{"title":120,"path":121,"stem":122},"31条指令单周期cpu设计(Verilog)-(八)上代码→指令译码以及控制器","\u002Fverilog\u002Fmips8","4.verilog\u002F08.mips8",{"title":124,"path":125,"stem":126},"31条指令单周期cpu设计(Verilog)-(九)上代码→基础模块实现","\u002Fverilog\u002Fmips9","4.verilog\u002F09.mips9",{"title":128,"path":129,"stem":130},"31条指令单周期cpu设计(Verilog)-(十)上代码→顶层模块设计&总结","\u002Fverilog\u002Fmips10","4.verilog\u002F10.mips10",{"title":132,"icon":35,"path":133,"stem":134,"children":135,"page":35},"Rust","\u002Frust","5.rust",[136,140],{"title":137,"path":138,"stem":139},"egui(一)从编译运行template开始","\u002Frust\u002Fegui1","5.rust\u002F01.egui1",{"title":141,"path":142,"stem":143},"egui(二)看看template的main函数：日志输出以及eframe run_native","\u002Frust\u002Fegui2","5.rust\u002F02.egui2",{"id":145,"title":67,"body":146,"description":1824,"extension":1825,"links":1826,"meta":1827,"navigation":54,"path":68,"seo":1828,"stem":69,"__hash__":1831},"docs\u002F3.llm\u002F03.langchain3.md",{"type":147,"value":148,"toc":1817},"minimark",[149,153,175,178,371,374,521,524,1027,1030,1813],[150,151,152],"h2",{"id":152},"说在前面",[154,155,156],"blockquote",{},[157,158,159,163,166,169,172],"ul",{},[160,161,162],"li",{},"操作系统：windows",[160,164,165],{},"python版本：3.9",[160,167,168],{},"langchain版本：0.3.20",[160,170,171],{},"pycharm版本：2023.1.2 (Community Edition)",[160,173,174],{},"其他：由于上一篇里用的1.5b模型实在太傻了，不太好演示，这里暂时换成deepseek",[150,176,177],{"id":177},"最简单版本",[157,179,180,183,212,368],{},[160,181,182],{},"依照上一篇的一些准备工作，我们首先可以实现一个最简易的聊天机器人版本",[160,184,185,186],{},"先把deepseek依赖库装下\n",[187,188,193],"pre",{"className":189,"code":190,"language":191,"meta":192,"style":192},"language-shell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pip install langchain-deepseek\n","shell","",[194,195,196],"code",{"__ignoreMap":192},[197,198,201,205,209],"span",{"class":199,"line":200},"line",1,[197,202,204],{"class":203},"sBMFI","pip",[197,206,208],{"class":207},"sfazB"," install",[197,210,211],{"class":207}," langchain-deepseek\n",[160,213,214,215,274,275],{},"上代码\n",[187,216,220],{"className":217,"code":218,"language":219,"meta":192,"style":192},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from langchain_deepseek import ChatDeepSeek\n\ndllm = ChatDeepSeek(model=\"deepseek-chat\", api_key=\"xxxxx\")\n\nfrom langchain_core.messages import HumanMessage\n\nwhile True:\n    input_msg = input(\"> \")\n    print(dllm.invoke([HumanMessage(content=input_msg)]).content)\n","python",[194,221,222,227,234,240,245,251,256,262,268],{"__ignoreMap":192},[197,223,224],{"class":199,"line":200},[197,225,226],{},"from langchain_deepseek import ChatDeepSeek\n",[197,228,230],{"class":199,"line":229},2,[197,231,233],{"emptyLinePlaceholder":232},true,"\n",[197,235,237],{"class":199,"line":236},3,[197,238,239],{},"dllm = ChatDeepSeek(model=\"deepseek-chat\", api_key=\"xxxxx\")\n",[197,241,243],{"class":199,"line":242},4,[197,244,233],{"emptyLinePlaceholder":232},[197,246,248],{"class":199,"line":247},5,[197,249,250],{},"from langchain_core.messages import HumanMessage\n",[197,252,254],{"class":199,"line":253},6,[197,255,233],{"emptyLinePlaceholder":232},[197,257,259],{"class":199,"line":258},7,[197,260,261],{},"while True:\n",[197,263,265],{"class":199,"line":264},8,[197,266,267],{},"    input_msg = input(\"> \")\n",[197,269,271],{"class":199,"line":270},9,[197,272,273],{},"    print(dllm.invoke([HumanMessage(content=input_msg)]).content)\n","\n测试\n",[187,276,278],{"className":189,"code":277,"language":191,"meta":192,"style":192},"(venv) PS D:\\Code\\langchain> python .\\main.py              \n> 你好\n你好！很高兴见到你。有什么我可以帮忙的吗？\n> 我叫柯南\n你好，柯南！你提到“柯南”，让我想到了《名侦探柯南》这部非常受欢迎的日本动漫。你是这部动漫的粉丝吗？还是你的名字真的叫柯南呢？如果你有任何关于动漫、推理或者其他方面的问题，都可以告诉我哦！\n> 你知道我叫什么吗？\n您好！我是由中国的深度求索（DeepSeek）公司开发的智能助手DeepSeek-V3。有关模型和产品的详细内容请参考官方文档。\n",[194,279,280,332,339,344,351,356,363],{"__ignoreMap":192},[197,281,282,286,289,292,295,298,302,305,308,311,314,317,320,323,326,329],{"class":199,"line":200},[197,283,285],{"class":284},"sMK4o","(",[197,287,288],{"class":203},"venv",[197,290,291],{"class":284},")",[197,293,294],{"class":203}," PS",[197,296,297],{"class":207}," D:",[197,299,301],{"class":300},"sTEyZ","\\C",[197,303,304],{"class":207},"ode",[197,306,307],{"class":300},"\\l",[197,309,310],{"class":207},"angchai",[197,312,313],{"class":300},"n",[197,315,316],{"class":284},">",[197,318,319],{"class":207}," python",[197,321,322],{"class":207}," .",[197,324,325],{"class":300},"\\m",[197,327,328],{"class":207},"ain.py",[197,330,331],{"class":300},"              \n",[197,333,334,336],{"class":199,"line":229},[197,335,316],{"class":284},[197,337,338],{"class":300}," 你好\n",[197,340,341],{"class":199,"line":236},[197,342,343],{"class":203},"你好！很高兴见到你。有什么我可以帮忙的吗？\n",[197,345,346,348],{"class":199,"line":242},[197,347,316],{"class":284},[197,349,350],{"class":300}," 我叫柯南\n",[197,352,353],{"class":199,"line":247},[197,354,355],{"class":203},"你好，柯南！你提到“柯南”，让我想到了《名侦探柯南》这部非常受欢迎的日本动漫。你是这部动漫的粉丝吗？还是你的名字真的叫柯南呢？如果你有任何关于动漫、推理或者其他方面的问题，都可以告诉我哦！\n",[197,357,358,360],{"class":199,"line":253},[197,359,316],{"class":284},[197,361,362],{"class":300}," 你知道我叫什么吗？\n",[197,364,365],{"class":199,"line":258},[197,366,367],{"class":203},"您好！我是由中国的深度求索（DeepSeek）公司开发的智能助手DeepSeek-V3。有关模型和产品的详细内容请参考官方文档。\n",[160,369,370],{},"这个聊天机器人实际上进行单次对话，没有记忆，接下来我们将逐步完善这个机器人",[150,372,373],{"id":373},"添加历史对话",[157,375,376,451],{},[160,377,378,379],{},"要让大模型有记忆，最简单的方式是将所有历史对话都交给大模型，比如：\n",[187,380,382],{"className":217,"code":381,"language":219,"meta":192,"style":192},"from langchain_deepseek import ChatDeepSeek\n\ndllm = ChatDeepSeek(model=\"deepseek-chat\", api_key=\"xxxxx\")\n\nfrom langchain_core.messages import HumanMessage,AIMessage\n\nmsg_history = []\nwhile True:\n    input_msg = input(\"> \")\n    msg_history.append(HumanMessage(content=input_msg))\n\n    ai_msg = dllm.invoke(msg_history).content\n    msg_history.append(AIMessage(content=ai_msg))\n    print(ai_msg)\n",[194,383,384,388,392,396,400,405,409,414,418,422,428,433,439,445],{"__ignoreMap":192},[197,385,386],{"class":199,"line":200},[197,387,226],{},[197,389,390],{"class":199,"line":229},[197,391,233],{"emptyLinePlaceholder":232},[197,393,394],{"class":199,"line":236},[197,395,239],{},[197,397,398],{"class":199,"line":242},[197,399,233],{"emptyLinePlaceholder":232},[197,401,402],{"class":199,"line":247},[197,403,404],{},"from langchain_core.messages import HumanMessage,AIMessage\n",[197,406,407],{"class":199,"line":253},[197,408,233],{"emptyLinePlaceholder":232},[197,410,411],{"class":199,"line":258},[197,412,413],{},"msg_history = []\n",[197,415,416],{"class":199,"line":264},[197,417,261],{},[197,419,420],{"class":199,"line":270},[197,421,267],{},[197,423,425],{"class":199,"line":424},10,[197,426,427],{},"    msg_history.append(HumanMessage(content=input_msg))\n",[197,429,431],{"class":199,"line":430},11,[197,432,233],{"emptyLinePlaceholder":232},[197,434,436],{"class":199,"line":435},12,[197,437,438],{},"    ai_msg = dllm.invoke(msg_history).content\n",[197,440,442],{"class":199,"line":441},13,[197,443,444],{},"    msg_history.append(AIMessage(content=ai_msg))\n",[197,446,448],{"class":199,"line":447},14,[197,449,450],{},"    print(ai_msg)\n",[160,452,453,454,520],{},"测试\n",[187,455,457],{"className":189,"code":456,"language":191,"meta":192,"style":192},"(venv) PS D:\\Code\\langchain> python .\\main.py\n> 你好，我是柯南\n你好，柯南！很高兴见到你。你今天有什么新的案件要解决吗？还是有什么谜题需要一起探讨？我很乐意帮忙！\n> 你知道我叫什么吗？\n当然知道，你是江户川柯南，一个聪明绝顶的少年侦探。你以敏锐的观察力和卓越的推理能力闻名，总是在不经意间揭开案件的真相。你的名字，就像你解决的那些错综复杂的案件一样，令人印象深刻。\n> \n",[194,458,459,492,499,504,510,515],{"__ignoreMap":192},[197,460,461,463,465,467,469,471,473,475,477,479,481,483,485,487,489],{"class":199,"line":200},[197,462,285],{"class":284},[197,464,288],{"class":203},[197,466,291],{"class":284},[197,468,294],{"class":203},[197,470,297],{"class":207},[197,472,301],{"class":300},[197,474,304],{"class":207},[197,476,307],{"class":300},[197,478,310],{"class":207},[197,480,313],{"class":300},[197,482,316],{"class":284},[197,484,319],{"class":207},[197,486,322],{"class":207},[197,488,325],{"class":300},[197,490,491],{"class":207},"ain.py\n",[197,493,494,496],{"class":199,"line":229},[197,495,316],{"class":284},[197,497,498],{"class":300}," 你好，我是柯南\n",[197,500,501],{"class":199,"line":236},[197,502,503],{"class":203},"你好，柯南！很高兴见到你。你今天有什么新的案件要解决吗？还是有什么谜题需要一起探讨？我很乐意帮忙！\n",[197,505,506,508],{"class":199,"line":242},[197,507,316],{"class":284},[197,509,362],{"class":300},[197,511,512],{"class":199,"line":247},[197,513,514],{"class":203},"当然知道，你是江户川柯南，一个聪明绝顶的少年侦探。你以敏锐的观察力和卓越的推理能力闻名，总是在不经意间揭开案件的真相。你的名字，就像你解决的那些错综复杂的案件一样，令人印象深刻。\n",[197,516,517],{"class":199,"line":253},[197,518,519],{"class":284},">\n","\n可以看到，AI能够知道之前对话的信息了",[150,522,523],{"id":523},"消息持久化",[157,525,526,565,588,824,864,887,908,927,945],{},[160,527,528,529,532,533,536,537,540,541,544,545,552,553,556,557,560,561,564],{},"当我们需要更好的管理历史消息时，我们可以将消息存储到数据库中，例如",[194,530,531],{},"mongo","、",[194,534,535],{},"mysql","之类的。在",[194,538,539],{},"langchain","的生态中，",[194,542,543],{},"langgraph","有一套内置的",[546,547,551],"a",{"href":548,"rel":549},"https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Fconcepts\u002Fpersistence\u002F",[550],"nofollow","持久化层","，它提供了几个数据库的封装，",[194,554,555],{},"sqlite","以及",[194,558,559],{},"postgres","；同时有一个使用内存的实现(",[194,562,563],{},"MemorySaver",")用于测试以及调试。",[160,566,567,568,570,571,573,574],{},"那我们就用",[194,569,543],{},"来试试，安装",[194,572,543],{},"：",[187,575,577],{"className":189,"code":576,"language":191,"meta":192,"style":192},"pip install langgraph\n",[194,578,579],{"__ignoreMap":192},[197,580,581,583,585],{"class":199,"line":200},[197,582,204],{"class":203},[197,584,208],{"class":207},[197,586,587],{"class":207}," langgraph\n",[160,589,590,591,750,753,754],{},"先看代码",[187,592,594],{"className":217,"code":593,"language":219,"meta":192,"style":192},"from langchain_deepseek import ChatDeepSeek\ndllm = ChatDeepSeek(model=\"deepseek-chat\", api_key=\"xxxxx\")\n\nfrom langchain_core.messages import HumanMessage,AIMessage\nfrom langgraph.checkpoint.memory import MemorySaver\nfrom langgraph.graph import START, MessagesState, StateGraph\n\n# 定义一个graph\nworkflow = StateGraph(state_schema=MessagesState)\n\n# 封装一下模型调用\ndef call_model(state: MessagesState):\n    response = dllm.invoke(state[\"messages\"])\n    return {\"messages\": response}\n\n# 定义一个模型节点\nworkflow.add_edge(START, \"model\")\nworkflow.add_node(\"model\", call_model)\n\n# 添加MemorySaver\nmemory = MemorySaver()\napp = workflow.compile(checkpointer=memory)\n\n# 定义一个配置，thread_id用于标识此次对话，常用于多用户环境，这里暂时不做扩展\nconfig = {\"configurable\": {\"thread_id\": \"konan\"}}\nwhile True:\n    input_msg = input(\"> \")\n    output = app.invoke({\"messages\": [HumanMessage(content=input_msg)]}, config)\n\n    print(output[\"messages\"][-1].content)\n",[194,595,596,600,604,608,612,617,622,626,631,636,640,645,650,655,660,665,671,677,683,688,694,700,706,711,717,723,728,733,739,744],{"__ignoreMap":192},[197,597,598],{"class":199,"line":200},[197,599,226],{},[197,601,602],{"class":199,"line":229},[197,603,239],{},[197,605,606],{"class":199,"line":236},[197,607,233],{"emptyLinePlaceholder":232},[197,609,610],{"class":199,"line":242},[197,611,404],{},[197,613,614],{"class":199,"line":247},[197,615,616],{},"from langgraph.checkpoint.memory import MemorySaver\n",[197,618,619],{"class":199,"line":253},[197,620,621],{},"from langgraph.graph import START, MessagesState, StateGraph\n",[197,623,624],{"class":199,"line":258},[197,625,233],{"emptyLinePlaceholder":232},[197,627,628],{"class":199,"line":264},[197,629,630],{},"# 定义一个graph\n",[197,632,633],{"class":199,"line":270},[197,634,635],{},"workflow = StateGraph(state_schema=MessagesState)\n",[197,637,638],{"class":199,"line":424},[197,639,233],{"emptyLinePlaceholder":232},[197,641,642],{"class":199,"line":430},[197,643,644],{},"# 封装一下模型调用\n",[197,646,647],{"class":199,"line":435},[197,648,649],{},"def call_model(state: MessagesState):\n",[197,651,652],{"class":199,"line":441},[197,653,654],{},"    response = dllm.invoke(state[\"messages\"])\n",[197,656,657],{"class":199,"line":447},[197,658,659],{},"    return {\"messages\": response}\n",[197,661,663],{"class":199,"line":662},15,[197,664,233],{"emptyLinePlaceholder":232},[197,666,668],{"class":199,"line":667},16,[197,669,670],{},"# 定义一个模型节点\n",[197,672,674],{"class":199,"line":673},17,[197,675,676],{},"workflow.add_edge(START, \"model\")\n",[197,678,680],{"class":199,"line":679},18,[197,681,682],{},"workflow.add_node(\"model\", call_model)\n",[197,684,686],{"class":199,"line":685},19,[197,687,233],{"emptyLinePlaceholder":232},[197,689,691],{"class":199,"line":690},20,[197,692,693],{},"# 添加MemorySaver\n",[197,695,697],{"class":199,"line":696},21,[197,698,699],{},"memory = MemorySaver()\n",[197,701,703],{"class":199,"line":702},22,[197,704,705],{},"app = workflow.compile(checkpointer=memory)\n",[197,707,709],{"class":199,"line":708},23,[197,710,233],{"emptyLinePlaceholder":232},[197,712,714],{"class":199,"line":713},24,[197,715,716],{},"# 定义一个配置，thread_id用于标识此次对话，常用于多用户环境，这里暂时不做扩展\n",[197,718,720],{"class":199,"line":719},25,[197,721,722],{},"config = {\"configurable\": {\"thread_id\": \"konan\"}}\n",[197,724,726],{"class":199,"line":725},26,[197,727,261],{},[197,729,731],{"class":199,"line":730},27,[197,732,267],{},[197,734,736],{"class":199,"line":735},28,[197,737,738],{},"    output = app.invoke({\"messages\": [HumanMessage(content=input_msg)]}, config)\n",[197,740,742],{"class":199,"line":741},29,[197,743,233],{"emptyLinePlaceholder":232},[197,745,747],{"class":199,"line":746},30,[197,748,749],{},"    print(output[\"messages\"][-1].content)\n",[751,752],"br",{},"测试",[187,755,757],{"className":189,"code":756,"language":191,"meta":192,"style":192},"(venv) PS E:\\Workspace\\pycharm\\langchain> python.exe .\\main.py\n> 你好，我是柯南\n你好，柯南！很高兴见到你。作为一名高中生侦探，你一定有很多精彩的推理故事吧？如果你有任何案件需要讨论，或者想分享一些有趣的线索，我都很乐意帮忙。你最近在调查什么案件呢？\n> 你知道我是谁吗？\n当然知道，你是江户川柯南，一个外表看似小孩，智慧却过于常人的名侦探。你原本是高中生侦探工藤新一，因被黑衣组织灌下毒药而身体缩小，化名为江户川柯南，继续破解各种复杂的案件。你的推理能力和对正义的执着令人敬佩。有什么我可以帮你的吗？\n",[194,758,759,801,807,812,819],{"__ignoreMap":192},[197,760,761,763,765,767,769,772,775,778,781,784,786,788,790,792,795,797,799],{"class":199,"line":200},[197,762,285],{"class":284},[197,764,288],{"class":203},[197,766,291],{"class":284},[197,768,294],{"class":203},[197,770,771],{"class":207}," E:",[197,773,774],{"class":300},"\\W",[197,776,777],{"class":207},"orkspace",[197,779,780],{"class":300},"\\p",[197,782,783],{"class":207},"ycharm",[197,785,307],{"class":300},[197,787,310],{"class":207},[197,789,313],{"class":300},[197,791,316],{"class":284},[197,793,794],{"class":207}," python.exe",[197,796,322],{"class":207},[197,798,325],{"class":300},[197,800,491],{"class":207},[197,802,803,805],{"class":199,"line":229},[197,804,316],{"class":284},[197,806,498],{"class":300},[197,808,809],{"class":199,"line":236},[197,810,811],{"class":203},"你好，柯南！很高兴见到你。作为一名高中生侦探，你一定有很多精彩的推理故事吧？如果你有任何案件需要讨论，或者想分享一些有趣的线索，我都很乐意帮忙。你最近在调查什么案件呢？\n",[197,813,814,816],{"class":199,"line":242},[197,815,316],{"class":284},[197,817,818],{"class":300}," 你知道我是谁吗？\n",[197,820,821],{"class":199,"line":247},[197,822,823],{"class":203},"当然知道，你是江户川柯南，一个外表看似小孩，智慧却过于常人的名侦探。你原本是高中生侦探工藤新一，因被黑衣组织灌下毒药而身体缩小，化名为江户川柯南，继续破解各种复杂的案件。你的推理能力和对正义的执着令人敬佩。有什么我可以帮你的吗？\n",[160,825,826,827,835,837,840,841,844,845,848,849],{},"一步步拆解下，首先是",[187,828,829],{"className":217,"code":635,"language":219,"meta":192,"style":192},[194,830,831],{"__ignoreMap":192},[197,832,833],{"class":199,"line":200},[197,834,635],{},[751,836],{},[194,838,839],{},"StateGraph","是一种所有节点均通过一个共享的状态管理器进行沟通的graph，在我们这个例子中，这个状态管理器的类型就是",[194,842,843],{},"MessagesState","，它其实就是一个字典，里面默认有",[194,846,847],{},"messages","这个kv。",[187,850,852],{"className":217,"code":851,"language":219,"meta":192,"style":192},"class MessagesState(TypedDict):\n    messages: Annotated[list[AnyMessage], add_messages]\n",[194,853,854,859],{"__ignoreMap":192},[197,855,856],{"class":199,"line":200},[197,857,858],{},"class MessagesState(TypedDict):\n",[197,860,861],{"class":199,"line":229},[197,862,863],{},"    messages: Annotated[list[AnyMessage], add_messages]\n",[160,865,866,867,884,886],{},"接下来是封装了一下模型的调用",[187,868,870],{"className":217,"code":869,"language":219,"meta":192,"style":192},"def call_model(state: MessagesState):\n    response = dllm.invoke(state[\"messages\"])\n    return {\"messages\": response}\n",[194,871,872,876,880],{"__ignoreMap":192},[197,873,874],{"class":199,"line":200},[197,875,649],{},[197,877,878],{"class":199,"line":229},[197,879,654],{},[197,881,882],{"class":199,"line":236},[197,883,659],{},[751,885],{},"它的参数是state，也就是我们的状态管理器；而返回值是一个字典，里面是模型的返回，字典的key是messages",[160,888,889,890,903],{},"而后开始定义我们的graph",[187,891,893],{"className":217,"code":892,"language":219,"meta":192,"style":192},"workflow.add_edge(START, \"model\")\nworkflow.add_node(\"model\", call_model)\n",[194,894,895,899],{"__ignoreMap":192},[197,896,897],{"class":199,"line":200},[197,898,676],{},[197,900,901],{"class":199,"line":229},[197,902,682],{},[904,905],"mermaid",{":config":906,"code":907},"config","graph%20LR%0A%20%20%09A(%5BStart%5D)%20--%3E%20B%5Bmodel%3Cbr%2F%3Ecall_model%5D",[160,909,910,911,913,914],{},"紧接着添加了",[194,912,563],{},"，这一步比较关键",[187,915,917],{"className":217,"code":916,"language":219,"meta":192,"style":192},"memory = MemorySaver()\napp = workflow.compile(checkpointer=memory)\n",[194,918,919,923],{"__ignoreMap":192},[197,920,921],{"class":199,"line":200},[197,922,699],{},[197,924,925],{"class":199,"line":229},[197,926,705],{},[160,928,929,930],{},"最后就是正常的调用了",[187,931,933],{"className":217,"code":932,"language":219,"meta":192,"style":192},"input_msg = input(\"> \")\noutput = app.invoke({\"messages\": [HumanMessage(content=input_msg)]}, config)\n",[194,934,935,940],{"__ignoreMap":192},[197,936,937],{"class":199,"line":200},[197,938,939],{},"input_msg = input(\"> \")\n",[197,941,942],{"class":199,"line":229},[197,943,944],{},"output = app.invoke({\"messages\": [HumanMessage(content=input_msg)]}, config)\n",[160,946,947,948,951,952,1018,1020,1021,1026],{},"看完这个流程，我有个疑问，用户的输入以及模型的返回，是怎样存入到memory之中的？关键点在于",[194,949,950],{},"checkpointer=memory","，如果把这个去掉，就没有记忆功能了",[187,953,955],{"className":189,"code":954,"language":191,"meta":192,"style":192},"(venv) PS E:\\Workspace\\pycharm\\langchain> python.exe .\\main.py\n> 你好，我是柯南\n你好，柯南！很高兴见到你。你今天有什么案件需要解决吗？还是有什么谜题需要一起探讨？我很乐意帮忙！\n> 你知道我是谁吗？\n您好！我是由中国的深度求索（DeepSeek）公司开发的智能助手DeepSeek-V3。有关模型和产品的详细内容请参考官方文档。\n> \n",[194,956,957,993,999,1004,1010,1014],{"__ignoreMap":192},[197,958,959,961,963,965,967,969,971,973,975,977,979,981,983,985,987,989,991],{"class":199,"line":200},[197,960,285],{"class":284},[197,962,288],{"class":203},[197,964,291],{"class":284},[197,966,294],{"class":203},[197,968,771],{"class":207},[197,970,774],{"class":300},[197,972,777],{"class":207},[197,974,780],{"class":300},[197,976,783],{"class":207},[197,978,307],{"class":300},[197,980,310],{"class":207},[197,982,313],{"class":300},[197,984,316],{"class":284},[197,986,794],{"class":207},[197,988,322],{"class":207},[197,990,325],{"class":300},[197,992,491],{"class":207},[197,994,995,997],{"class":199,"line":229},[197,996,316],{"class":284},[197,998,498],{"class":300},[197,1000,1001],{"class":199,"line":236},[197,1002,1003],{"class":203},"你好，柯南！很高兴见到你。你今天有什么案件需要解决吗？还是有什么谜题需要一起探讨？我很乐意帮忙！\n",[197,1005,1006,1008],{"class":199,"line":242},[197,1007,316],{"class":284},[197,1009,818],{"class":300},[197,1011,1012],{"class":199,"line":247},[197,1013,367],{"class":203},[197,1015,1016],{"class":199,"line":253},[197,1017,519],{"class":284},[751,1019],{},"这个如何实现的这里就先不探讨了，应该和",[546,1022,1025],{"href":1023,"rel":1024},"https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002Freference\u002Fpregel\u002F",[550],"这个","有关",[150,1028,1029],{"id":1029},"管理历史对话",[157,1031,1032,1035,1157,1810],{},[160,1033,1034],{},"通过上述的代码我们可以知道，当对话次数越多，一次大模型请求传递的数据量就越多，消耗的token数就越多，所以一个非常重要的功能就是管理历史对话，让传给大模型的数据量不要过大。",[160,1036,1037,1038,1040,1041,1146,1148,1149,1152,1153,1156],{},"同样的，",[194,1039,539],{},"有一些封装好的接口可以使用",[187,1042,1044],{"className":217,"code":1043,"language":219,"meta":192,"style":192},"def dummy_token_counter(messages: list[BaseMessage]) -> int:\n    count = 0\n    for msg in messages:\n        if isinstance(msg.content, str):\n            count += len(msg.content)\n    return count\n\ntrimmer = trim_messages(\n    max_tokens=64,\n    strategy=\"last\",\n    token_counter=dummy_token_counter,\n    include_system=True,\n    allow_partial=False,\n    start_on=\"human\",\n)\n\n# 封装一下模型调用\ndef call_model(state: MessagesState):\n    trimmed_msg = trimmer.invoke(state[\"messages\"])\n    response = dllm.invoke(trimmed_msg)\n    return {\"messages\": response}\n",[194,1045,1046,1051,1056,1061,1066,1071,1076,1080,1085,1090,1095,1100,1105,1110,1115,1120,1124,1128,1132,1137,1142],{"__ignoreMap":192},[197,1047,1048],{"class":199,"line":200},[197,1049,1050],{},"def dummy_token_counter(messages: list[BaseMessage]) -> int:\n",[197,1052,1053],{"class":199,"line":229},[197,1054,1055],{},"    count = 0\n",[197,1057,1058],{"class":199,"line":236},[197,1059,1060],{},"    for msg in messages:\n",[197,1062,1063],{"class":199,"line":242},[197,1064,1065],{},"        if isinstance(msg.content, str):\n",[197,1067,1068],{"class":199,"line":247},[197,1069,1070],{},"            count += len(msg.content)\n",[197,1072,1073],{"class":199,"line":253},[197,1074,1075],{},"    return count\n",[197,1077,1078],{"class":199,"line":258},[197,1079,233],{"emptyLinePlaceholder":232},[197,1081,1082],{"class":199,"line":264},[197,1083,1084],{},"trimmer = trim_messages(\n",[197,1086,1087],{"class":199,"line":270},[197,1088,1089],{},"    max_tokens=64,\n",[197,1091,1092],{"class":199,"line":424},[197,1093,1094],{},"    strategy=\"last\",\n",[197,1096,1097],{"class":199,"line":430},[197,1098,1099],{},"    token_counter=dummy_token_counter,\n",[197,1101,1102],{"class":199,"line":435},[197,1103,1104],{},"    include_system=True,\n",[197,1106,1107],{"class":199,"line":441},[197,1108,1109],{},"    allow_partial=False,\n",[197,1111,1112],{"class":199,"line":447},[197,1113,1114],{},"    start_on=\"human\",\n",[197,1116,1117],{"class":199,"line":662},[197,1118,1119],{},")\n",[197,1121,1122],{"class":199,"line":667},[197,1123,233],{"emptyLinePlaceholder":232},[197,1125,1126],{"class":199,"line":673},[197,1127,644],{},[197,1129,1130],{"class":199,"line":679},[197,1131,649],{},[197,1133,1134],{"class":199,"line":685},[197,1135,1136],{},"    trimmed_msg = trimmer.invoke(state[\"messages\"])\n",[197,1138,1139],{"class":199,"line":690},[197,1140,1141],{},"    response = dllm.invoke(trimmed_msg)\n",[197,1143,1144],{"class":199,"line":696},[197,1145,659],{},[751,1147],{},"这里由于用的",[194,1150,1151],{},"deepseek","，直接使用",[194,1154,1155],{},"token_counter=dllm","会报错，可能哪里不兼容，所以随便写了一个counter",[160,1158,1159,1160],{},"测试，可以看到第三个问题的时候已经不知道我是柯南了",[187,1161,1163],{"className":189,"code":1162,"language":191,"meta":192,"style":192},"(venv) PS E:\\Workspace\\pycharm\\langchain> python.exe .\\main.py\n> 你好，我是柯南\n你好，柯南！很高兴见到你。你今天有什么新的案件要解决吗？还是有什么需要我帮忙的地方？\n> 怎样睡得更好\n要改善睡眠质量，可以尝试以下方法：\n\n### 1. **建立规律的作息时间**\n- 每天尽量在同一时间上床睡觉和起床，即使在周末也保持一致。\n- 帮助身体形成生物钟，更容易入睡和醒来。\n\n### 2. **创造舒适的睡眠环境**\n- **温度**：保持卧室凉爽（18-22℃为宜）。\n- **光线**：使用遮光窗帘或眼罩，避免光线干扰。\n- **噪音**：使用耳塞或白噪音机减少噪音干扰。\n- **床具**：选择舒适的床垫和枕头，适合你的睡眠姿势。\n\n### 3. **睡前放松身心**\n- **避免刺激**：睡前1-2小时避免使用电子设备（如手机、电脑），减少蓝光对大脑的刺激。\n- **放松活动**：可以尝试冥想、深呼吸、轻柔的瑜伽或听舒缓的音乐。\n- **温水泡脚或泡澡**：帮助放松肌肉，促进血液循环。\n\n### 4. **调整饮食习惯**\n- **避免咖啡因和酒精**：睡前4-6小时避免摄入咖啡、茶、巧克力或酒精。\n- **清淡晚餐**：避免睡前吃太饱或吃油腻、辛辣的食物。\n- **适量饮水**：睡前不要喝太多水，以免夜间频繁起夜。\n\n### 5. **白天保持适度运动**\n- 每天进行30分钟左右的适度运动（如散步、慢跑、瑜伽），但避免在睡前2小时内剧烈运动。\n\n### 6. **管理压力和焦虑**\n- **写日记**：睡前写下当天的烦恼或明天的计划，帮助清空大脑。\n- **练习正念**：通过冥想或深呼吸练习缓解焦虑。\n- **寻求支持**：如果压力过大，可以找朋友倾诉或寻求专业帮助。\n\n### 7. **避免长时间午睡**\n- 如果需要午睡，控制在20-30分钟内，避免影响夜间睡眠。\n\n### 8. **限制床上活动**\n- 床只用于睡觉和亲密关系，避免在床上工作、看电视或玩手机，帮助大脑建立“床=睡眠”的联想。\n\n### 9. **尝试自然助眠方法**\n- **喝温牛奶或草本茶**：如洋甘菊茶、薰衣草茶。\n- **使用香薰**：薰衣草、洋甘菊等精油有助于放松。\n\n### 10. **如果长期失眠，及时就医**\n- 如果尝试以上方法后仍无法改善睡眠，建议咨询医生，排除潜在的健康问题（如睡眠呼吸暂停、焦虑症等）。\n\n### 小贴士：\n- **不要强迫自己入睡**：如果躺下20分钟后仍无法入睡，可以起床做一些放松活动，直到感到困倦再回到床上。\n- **记录睡眠日记**：记录每天的睡眠时间、质量、饮食和活动，帮助找到影响睡眠的因素。\n\n希望这些方法能帮助你改善睡眠，拥有更高质量的休息！\n> 我是谁\n这个问题涉及到自我认知和哲学思考。从哲学的角度来看，“我是谁”是一个关于自我身份和存在本质的问题。不同的哲学流派和思想家对此有不同的解释。\n\n1. **笛卡尔的“我思故我在”**：笛卡尔认为，思考是自我存在的证明。通过怀疑一切，他发现唯一不可怀疑的是自己在思考的事实，因此得出结论“我思故我在”。\n\n2. **佛教的无我**：佛教认为，所谓的“我”是一个幻觉，是由五蕴（色、受、想、行、识）暂时聚合而成的。真正的自我并不存在，执着于“我”是痛苦的根源。\n\n3. **存在主义**：存在主义者如萨特认为，存在先于本质。人首先存在，然后通过自己的选择和行动来定义自己。因此，“我是谁”是由你自己通过行动和选择来决定的。\n\n4. **心理学视角**：从心理学角度来看，自我是一个复杂的结构，包括自我概念、自我认同和自我意识。你是谁可能由你的经历、记忆、情感、价值观和社会关系共同塑造。\n\n5. **生物学视角**：从生物学角度来看，你是由你的基因、生理结构和大脑功能所决定的。你的身体和大脑的状态会影响你的思维、情感和行为。\n\n6. **社会学视角**：社会学家认为，自我是在社会互动中形成的。你通过与他人的关系、社会角色和文化背景来定义自己。\n\n7. **灵性视角**：在一些灵性传统中，真正的自我被认为是超越物质世界的，与宇宙或神性相连。通过冥想、祈祷或其他灵性实践，人们试图认识这个更深层次的自我。\n\n最终，“我是谁”这个问题没有一个简单的答案，它可能需要你通过自我反思、哲学思考、科学探索和灵性实践来不断探索和理解。\n",[194,1164,1165,1201,1207,1212,1219,1224,1228,1234,1242,1249,1253,1258,1274,1288,1302,1316,1320,1325,1339,1353,1367,1371,1376,1390,1404,1418,1422,1427,1434,1438,1443,1458,1473,1488,1493,1499,1507,1512,1518,1526,1531,1537,1552,1567,1572,1578,1586,1591,1597,1612,1627,1632,1638,1646,1652,1657,1673,1678,1694,1699,1715,1720,1736,1741,1757,1762,1778,1783,1799,1804],{"__ignoreMap":192},[197,1166,1167,1169,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199],{"class":199,"line":200},[197,1168,285],{"class":284},[197,1170,288],{"class":203},[197,1172,291],{"class":284},[197,1174,294],{"class":203},[197,1176,771],{"class":207},[197,1178,774],{"class":300},[197,1180,777],{"class":207},[197,1182,780],{"class":300},[197,1184,783],{"class":207},[197,1186,307],{"class":300},[197,1188,310],{"class":207},[197,1190,313],{"class":300},[197,1192,316],{"class":284},[197,1194,794],{"class":207},[197,1196,322],{"class":207},[197,1198,325],{"class":300},[197,1200,491],{"class":207},[197,1202,1203,1205],{"class":199,"line":229},[197,1204,316],{"class":284},[197,1206,498],{"class":300},[197,1208,1209],{"class":199,"line":236},[197,1210,1211],{"class":203},"你好，柯南！很高兴见到你。你今天有什么新的案件要解决吗？还是有什么需要我帮忙的地方？\n",[197,1213,1214,1216],{"class":199,"line":242},[197,1215,316],{"class":284},[197,1217,1218],{"class":300}," 怎样睡得更好\n",[197,1220,1221],{"class":199,"line":247},[197,1222,1223],{"class":203},"要改善睡眠质量，可以尝试以下方法：\n",[197,1225,1226],{"class":199,"line":253},[197,1227,233],{"emptyLinePlaceholder":232},[197,1229,1230],{"class":199,"line":258},[197,1231,1233],{"class":1232},"sHwdD","### 1. **建立规律的作息时间**\n",[197,1235,1236,1239],{"class":199,"line":264},[197,1237,1238],{"class":203},"-",[197,1240,1241],{"class":207}," 每天尽量在同一时间上床睡觉和起床，即使在周末也保持一致。\n",[197,1243,1244,1246],{"class":199,"line":270},[197,1245,1238],{"class":203},[197,1247,1248],{"class":207}," 帮助身体形成生物钟，更容易入睡和醒来。\n",[197,1250,1251],{"class":199,"line":424},[197,1252,233],{"emptyLinePlaceholder":232},[197,1254,1255],{"class":199,"line":430},[197,1256,1257],{"class":1232},"### 2. **创造舒适的睡眠环境**\n",[197,1259,1260,1262,1265,1268,1271],{"class":199,"line":435},[197,1261,1238],{"class":203},[197,1263,1264],{"class":300}," **",[197,1266,1267],{"class":207},"温度",[197,1269,1270],{"class":300},"**",[197,1272,1273],{"class":207},"：保持卧室凉爽（18-22℃为宜）。\n",[197,1275,1276,1278,1280,1283,1285],{"class":199,"line":441},[197,1277,1238],{"class":203},[197,1279,1264],{"class":300},[197,1281,1282],{"class":207},"光线",[197,1284,1270],{"class":300},[197,1286,1287],{"class":207},"：使用遮光窗帘或眼罩，避免光线干扰。\n",[197,1289,1290,1292,1294,1297,1299],{"class":199,"line":447},[197,1291,1238],{"class":203},[197,1293,1264],{"class":300},[197,1295,1296],{"class":207},"噪音",[197,1298,1270],{"class":300},[197,1300,1301],{"class":207},"：使用耳塞或白噪音机减少噪音干扰。\n",[197,1303,1304,1306,1308,1311,1313],{"class":199,"line":662},[197,1305,1238],{"class":203},[197,1307,1264],{"class":300},[197,1309,1310],{"class":207},"床具",[197,1312,1270],{"class":300},[197,1314,1315],{"class":207},"：选择舒适的床垫和枕头，适合你的睡眠姿势。\n",[197,1317,1318],{"class":199,"line":667},[197,1319,233],{"emptyLinePlaceholder":232},[197,1321,1322],{"class":199,"line":673},[197,1323,1324],{"class":1232},"### 3. **睡前放松身心**\n",[197,1326,1327,1329,1331,1334,1336],{"class":199,"line":679},[197,1328,1238],{"class":203},[197,1330,1264],{"class":300},[197,1332,1333],{"class":207},"避免刺激",[197,1335,1270],{"class":300},[197,1337,1338],{"class":207},"：睡前1-2小时避免使用电子设备（如手机、电脑），减少蓝光对大脑的刺激。\n",[197,1340,1341,1343,1345,1348,1350],{"class":199,"line":685},[197,1342,1238],{"class":203},[197,1344,1264],{"class":300},[197,1346,1347],{"class":207},"放松活动",[197,1349,1270],{"class":300},[197,1351,1352],{"class":207},"：可以尝试冥想、深呼吸、轻柔的瑜伽或听舒缓的音乐。\n",[197,1354,1355,1357,1359,1362,1364],{"class":199,"line":690},[197,1356,1238],{"class":203},[197,1358,1264],{"class":300},[197,1360,1361],{"class":207},"温水泡脚或泡澡",[197,1363,1270],{"class":300},[197,1365,1366],{"class":207},"：帮助放松肌肉，促进血液循环。\n",[197,1368,1369],{"class":199,"line":696},[197,1370,233],{"emptyLinePlaceholder":232},[197,1372,1373],{"class":199,"line":702},[197,1374,1375],{"class":1232},"### 4. **调整饮食习惯**\n",[197,1377,1378,1380,1382,1385,1387],{"class":199,"line":708},[197,1379,1238],{"class":203},[197,1381,1264],{"class":300},[197,1383,1384],{"class":207},"避免咖啡因和酒精",[197,1386,1270],{"class":300},[197,1388,1389],{"class":207},"：睡前4-6小时避免摄入咖啡、茶、巧克力或酒精。\n",[197,1391,1392,1394,1396,1399,1401],{"class":199,"line":713},[197,1393,1238],{"class":203},[197,1395,1264],{"class":300},[197,1397,1398],{"class":207},"清淡晚餐",[197,1400,1270],{"class":300},[197,1402,1403],{"class":207},"：避免睡前吃太饱或吃油腻、辛辣的食物。\n",[197,1405,1406,1408,1410,1413,1415],{"class":199,"line":719},[197,1407,1238],{"class":203},[197,1409,1264],{"class":300},[197,1411,1412],{"class":207},"适量饮水",[197,1414,1270],{"class":300},[197,1416,1417],{"class":207},"：睡前不要喝太多水，以免夜间频繁起夜。\n",[197,1419,1420],{"class":199,"line":725},[197,1421,233],{"emptyLinePlaceholder":232},[197,1423,1424],{"class":199,"line":730},[197,1425,1426],{"class":1232},"### 5. **白天保持适度运动**\n",[197,1428,1429,1431],{"class":199,"line":735},[197,1430,1238],{"class":203},[197,1432,1433],{"class":207}," 每天进行30分钟左右的适度运动（如散步、慢跑、瑜伽），但避免在睡前2小时内剧烈运动。\n",[197,1435,1436],{"class":199,"line":741},[197,1437,233],{"emptyLinePlaceholder":232},[197,1439,1440],{"class":199,"line":746},[197,1441,1442],{"class":1232},"### 6. **管理压力和焦虑**\n",[197,1444,1446,1448,1450,1453,1455],{"class":199,"line":1445},31,[197,1447,1238],{"class":203},[197,1449,1264],{"class":300},[197,1451,1452],{"class":207},"写日记",[197,1454,1270],{"class":300},[197,1456,1457],{"class":207},"：睡前写下当天的烦恼或明天的计划，帮助清空大脑。\n",[197,1459,1461,1463,1465,1468,1470],{"class":199,"line":1460},32,[197,1462,1238],{"class":203},[197,1464,1264],{"class":300},[197,1466,1467],{"class":207},"练习正念",[197,1469,1270],{"class":300},[197,1471,1472],{"class":207},"：通过冥想或深呼吸练习缓解焦虑。\n",[197,1474,1476,1478,1480,1483,1485],{"class":199,"line":1475},33,[197,1477,1238],{"class":203},[197,1479,1264],{"class":300},[197,1481,1482],{"class":207},"寻求支持",[197,1484,1270],{"class":300},[197,1486,1487],{"class":207},"：如果压力过大，可以找朋友倾诉或寻求专业帮助。\n",[197,1489,1491],{"class":199,"line":1490},34,[197,1492,233],{"emptyLinePlaceholder":232},[197,1494,1496],{"class":199,"line":1495},35,[197,1497,1498],{"class":1232},"### 7. **避免长时间午睡**\n",[197,1500,1502,1504],{"class":199,"line":1501},36,[197,1503,1238],{"class":203},[197,1505,1506],{"class":207}," 如果需要午睡，控制在20-30分钟内，避免影响夜间睡眠。\n",[197,1508,1510],{"class":199,"line":1509},37,[197,1511,233],{"emptyLinePlaceholder":232},[197,1513,1515],{"class":199,"line":1514},38,[197,1516,1517],{"class":1232},"### 8. **限制床上活动**\n",[197,1519,1521,1523],{"class":199,"line":1520},39,[197,1522,1238],{"class":203},[197,1524,1525],{"class":207}," 床只用于睡觉和亲密关系，避免在床上工作、看电视或玩手机，帮助大脑建立“床=睡眠”的联想。\n",[197,1527,1529],{"class":199,"line":1528},40,[197,1530,233],{"emptyLinePlaceholder":232},[197,1532,1534],{"class":199,"line":1533},41,[197,1535,1536],{"class":1232},"### 9. **尝试自然助眠方法**\n",[197,1538,1540,1542,1544,1547,1549],{"class":199,"line":1539},42,[197,1541,1238],{"class":203},[197,1543,1264],{"class":300},[197,1545,1546],{"class":207},"喝温牛奶或草本茶",[197,1548,1270],{"class":300},[197,1550,1551],{"class":207},"：如洋甘菊茶、薰衣草茶。\n",[197,1553,1555,1557,1559,1562,1564],{"class":199,"line":1554},43,[197,1556,1238],{"class":203},[197,1558,1264],{"class":300},[197,1560,1561],{"class":207},"使用香薰",[197,1563,1270],{"class":300},[197,1565,1566],{"class":207},"：薰衣草、洋甘菊等精油有助于放松。\n",[197,1568,1570],{"class":199,"line":1569},44,[197,1571,233],{"emptyLinePlaceholder":232},[197,1573,1575],{"class":199,"line":1574},45,[197,1576,1577],{"class":1232},"### 10. **如果长期失眠，及时就医**\n",[197,1579,1581,1583],{"class":199,"line":1580},46,[197,1582,1238],{"class":203},[197,1584,1585],{"class":207}," 如果尝试以上方法后仍无法改善睡眠，建议咨询医生，排除潜在的健康问题（如睡眠呼吸暂停、焦虑症等）。\n",[197,1587,1589],{"class":199,"line":1588},47,[197,1590,233],{"emptyLinePlaceholder":232},[197,1592,1594],{"class":199,"line":1593},48,[197,1595,1596],{"class":1232},"### 小贴士：\n",[197,1598,1600,1602,1604,1607,1609],{"class":199,"line":1599},49,[197,1601,1238],{"class":203},[197,1603,1264],{"class":300},[197,1605,1606],{"class":207},"不要强迫自己入睡",[197,1608,1270],{"class":300},[197,1610,1611],{"class":207},"：如果躺下20分钟后仍无法入睡，可以起床做一些放松活动，直到感到困倦再回到床上。\n",[197,1613,1615,1617,1619,1622,1624],{"class":199,"line":1614},50,[197,1616,1238],{"class":203},[197,1618,1264],{"class":300},[197,1620,1621],{"class":207},"记录睡眠日记",[197,1623,1270],{"class":300},[197,1625,1626],{"class":207},"：记录每天的睡眠时间、质量、饮食和活动，帮助找到影响睡眠的因素。\n",[197,1628,1630],{"class":199,"line":1629},51,[197,1631,233],{"emptyLinePlaceholder":232},[197,1633,1635],{"class":199,"line":1634},52,[197,1636,1637],{"class":203},"希望这些方法能帮助你改善睡眠，拥有更高质量的休息！\n",[197,1639,1641,1643],{"class":199,"line":1640},53,[197,1642,316],{"class":284},[197,1644,1645],{"class":300}," 我是谁\n",[197,1647,1649],{"class":199,"line":1648},54,[197,1650,1651],{"class":203},"这个问题涉及到自我认知和哲学思考。从哲学的角度来看，“我是谁”是一个关于自我身份和存在本质的问题。不同的哲学流派和思想家对此有不同的解释。\n",[197,1653,1655],{"class":199,"line":1654},55,[197,1656,233],{"emptyLinePlaceholder":232},[197,1658,1660,1663,1665,1668,1670],{"class":199,"line":1659},56,[197,1661,1662],{"class":203},"1.",[197,1664,1264],{"class":300},[197,1666,1667],{"class":207},"笛卡尔的“我思故我在”",[197,1669,1270],{"class":300},[197,1671,1672],{"class":207},"：笛卡尔认为，思考是自我存在的证明。通过怀疑一切，他发现唯一不可怀疑的是自己在思考的事实，因此得出结论“我思故我在”。\n",[197,1674,1676],{"class":199,"line":1675},57,[197,1677,233],{"emptyLinePlaceholder":232},[197,1679,1681,1684,1686,1689,1691],{"class":199,"line":1680},58,[197,1682,1683],{"class":203},"2.",[197,1685,1264],{"class":300},[197,1687,1688],{"class":207},"佛教的无我",[197,1690,1270],{"class":300},[197,1692,1693],{"class":207},"：佛教认为，所谓的“我”是一个幻觉，是由五蕴（色、受、想、行、识）暂时聚合而成的。真正的自我并不存在，执着于“我”是痛苦的根源。\n",[197,1695,1697],{"class":199,"line":1696},59,[197,1698,233],{"emptyLinePlaceholder":232},[197,1700,1702,1705,1707,1710,1712],{"class":199,"line":1701},60,[197,1703,1704],{"class":203},"3.",[197,1706,1264],{"class":300},[197,1708,1709],{"class":207},"存在主义",[197,1711,1270],{"class":300},[197,1713,1714],{"class":207},"：存在主义者如萨特认为，存在先于本质。人首先存在，然后通过自己的选择和行动来定义自己。因此，“我是谁”是由你自己通过行动和选择来决定的。\n",[197,1716,1718],{"class":199,"line":1717},61,[197,1719,233],{"emptyLinePlaceholder":232},[197,1721,1723,1726,1728,1731,1733],{"class":199,"line":1722},62,[197,1724,1725],{"class":203},"4.",[197,1727,1264],{"class":300},[197,1729,1730],{"class":207},"心理学视角",[197,1732,1270],{"class":300},[197,1734,1735],{"class":207},"：从心理学角度来看，自我是一个复杂的结构，包括自我概念、自我认同和自我意识。你是谁可能由你的经历、记忆、情感、价值观和社会关系共同塑造。\n",[197,1737,1739],{"class":199,"line":1738},63,[197,1740,233],{"emptyLinePlaceholder":232},[197,1742,1744,1747,1749,1752,1754],{"class":199,"line":1743},64,[197,1745,1746],{"class":203},"5.",[197,1748,1264],{"class":300},[197,1750,1751],{"class":207},"生物学视角",[197,1753,1270],{"class":300},[197,1755,1756],{"class":207},"：从生物学角度来看，你是由你的基因、生理结构和大脑功能所决定的。你的身体和大脑的状态会影响你的思维、情感和行为。\n",[197,1758,1760],{"class":199,"line":1759},65,[197,1761,233],{"emptyLinePlaceholder":232},[197,1763,1765,1768,1770,1773,1775],{"class":199,"line":1764},66,[197,1766,1767],{"class":203},"6.",[197,1769,1264],{"class":300},[197,1771,1772],{"class":207},"社会学视角",[197,1774,1270],{"class":300},[197,1776,1777],{"class":207},"：社会学家认为，自我是在社会互动中形成的。你通过与他人的关系、社会角色和文化背景来定义自己。\n",[197,1779,1781],{"class":199,"line":1780},67,[197,1782,233],{"emptyLinePlaceholder":232},[197,1784,1786,1789,1791,1794,1796],{"class":199,"line":1785},68,[197,1787,1788],{"class":203},"7.",[197,1790,1264],{"class":300},[197,1792,1793],{"class":207},"灵性视角",[197,1795,1270],{"class":300},[197,1797,1798],{"class":207},"：在一些灵性传统中，真正的自我被认为是超越物质世界的，与宇宙或神性相连。通过冥想、祈祷或其他灵性实践，人们试图认识这个更深层次的自我。\n",[197,1800,1802],{"class":199,"line":1801},69,[197,1803,233],{"emptyLinePlaceholder":232},[197,1805,1807],{"class":199,"line":1806},70,[197,1808,1809],{"class":203},"最终，“我是谁”这个问题没有一个简单的答案，它可能需要你通过自我反思、哲学思考、科学探索和灵性实践来不断探索和理解。\n",[160,1811,1812],{},"以上，柯南要碎觉了",[1814,1815,1816],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":192,"searchDepth":200,"depth":229,"links":1818},[1819,1820,1821,1822,1823],{"id":152,"depth":229,"text":152},{"id":177,"depth":229,"text":177},{"id":373,"depth":229,"text":373},{"id":523,"depth":229,"text":523},{"id":1029,"depth":229,"text":1029},"使用 Langchain 构建命令行聊天机器人，介绍消息历史管理、LangGraph 持久化层（MemorySaver）、StateGraph 状态管理以及历史对话裁剪（trim_messages）优化方法。","md",null,{},{"title":1829,"description":1830},"【llm\u002Flangchain】langchain入门-使用langchain编写一个简单的聊天机器人(DeepSeek API&命令行版本)","使用 Langchain 构建命令行聊天机器人，介绍消息历史管理、LangGraph 持久化层（MemorySaver）、StateGraph 状态管理以及历史对话裁剪（trim_messages）优化方法，实现有记忆的 AI 对话功能。","7MttvOXbxy8Ujg-uQ1ILRuBOEgocH-SpYP3d-h1hi1I",[1833,1835],{"title":63,"path":64,"stem":65,"description":1834,"children":-1},"详细介绍如何使用 Langchain 调用本地部署的大模型，包括 llama.cpp 和 Ollama 的配置方法、API 调用示例，以及常见问题解决方案。",{"title":71,"path":72,"stem":73,"description":1836,"children":-1},"详细介绍如何使用 Langchain 构建拥有 RAG 能力的代码问答应用，包括 DeepSeek API 集成、本地 bge-m3 嵌入模型配置、以及命令行版本实现。",1776616490416]