使用 mitmproxy来窥探 claude code 的系统提示词
最近使用 claude code 过程中,想要查看一下具体的请求数据,学习一下它的提示词,但是 claude code 是个在 shell 中运行的工具,不太好查看,这里提供一种使用 mitmproxy 来抓包的方法,类似的还有使用 wireshark 等。
最近使用 claude code 过程中,想要查看一下具体的请求数据,学习一下它的提示词,但是 claude code 是个在 shell 中运行的工具,不太好查看,这里提供一种使用 mitmproxy 来抓包的方法,类似的还有使用 wireshark 等。
敏感词过滤,这个看起来“老掉牙”的功能,其实藏着不少算法的门道。
你可能不知道,大厂评论系统、弹幕平台、甚至聊天机器人背后,都在悄悄跑着一台“小型自动机”——DFA。
今天我们就用 Python,带你从最简单的思路出发,一步步搞懂:
为什么大家都爱用 DFA 算法 来做敏感词过滤。
假设你用 FastMCP 写了一个最简单的工具函数:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("My Server")
@mcp.tool(name="打招呼",description="简单的打招呼")
async def hello() -> str:
return "hello world"
这个函数很简单,运行也没问题。
但是一旦你想要在函数里获取请求头、用户信息、IP、Token 等信息(一般用于一些权限校验,数据打点等操作),就会发现:
函数没有直接的 Request 对象!
这时就要用到关键角色 —— ctx: Context
如果你用 Python 开发过 MCP 服务,大概率遇到过这样的场景:服务在本地跑得好好的,一到生产环境就各种幺蛾子。特别是当你想要多机部署时,发现负载均衡器怎么配置都不对劲。
问题根源:SSE 的“粘性会话”魔咒
传统的 SSE(Server-Sent Events)模式有个致命缺陷:需要维护长连接和会话状态。这意味着:
在使用大语言模型(LLM,例如 GPT 系列)时,我们经常要求模型返回结构化的 JSON 数据,以便程序进一步解析和处理。然而,现实中模型输出的 JSON 往往“不够干净”——可能会在前后多出说明文字、注释、甚至中途缺少引号或逗号,从而导致 json.loads() 报错。
在使用 Pydantic 构建 Python 项目时,我们经常需要将 JSON 数据转换为模型实例。传统的方式通常是先用 json.loads() 将字符串解析成字典,再通过 Model(**data) 初始化对象。
而从 Pydantic v2 开始,引入了一个更高效、更简洁的新方法:model_validate_json()。
本文将带你深入理解它的用法、优势、与传统方式的区别,以及如何优雅地处理异常。
typescript 中,异步函数 async 是一种特殊类型的函数,它可以返回一个 Promise 对象。异步函数使用 async 关键字声明,并使用 await 关键字等待 Promise 对象的完成。
下面详细记录一下 typescript 中的异步函数用法
在之前的文章中,使用langgraph 创建的agent,在进行调试时,都是写 python 代码来自己调用,今天介绍一种更加方便的在线调试langgraph 应用的方案,使用 agent-chat-ui 进行调试。
Agent Chat UI 是一个 Next.js 应用程序,它可以通过聊天界面使用 messages 键与任何 LangGraph 服务器进行聊天。
agent-chat-ui 项目地址 https://github.com/langchain-ai/agent-chat-ui
初始化项目,安装依赖
uv init langgraphui --python 3.11
cd langgraphui
uv sync
uv add langgraph-cli[inmem]
在大模型agent 开发过程中,经常会遇到需要代码执行的操作,以往我们会单独创建一个沙箱,对外暴露一个web 端口,接受用户的代码,将执行结果返回给调用端,这种方式是一种比较安全的方式,但是需要开发沙箱服务,且还要返回符合大模型规范的内容。
langchain 团队近期开源了一个沙箱服务,专门用于执行python 代码,且这个项目和langchain 生态相结合,可以很方便的开发出代码执行工具。
项目地址 https://github.com/langchain-ai/langchain-sandbox
让我们来看一下它的使用吧。
使用uv 管理的python项目,开发了一段时间以后,有很多第三方的依赖有更新了,这时需要更新一下,本文介绍一下如何使用uv 来更新项目依赖。
先安装几个包的老版本
uv add "fastapi==0.114.2"
uv add "httpx<=0.28.0"
此时 pyproject.toml 中的配置信息为
[project]
name = "version-demo"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"fastapi==0.114.2",
"httpx<=0.28.0",
]
[[tool.uv.index]]
url = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"