跳到主要内容

再也不用怕 LLM 返回脏 JSON:用 json_repair 一行代码自动修复!

· 阅读需 5 分钟

为什么大模型生成的 JSON 需要修复

在使用大语言模型(LLM,例如 GPT 系列)时,我们经常要求模型返回结构化的 JSON 数据,以便程序进一步解析和处理。然而,现实中模型输出的 JSON 往往“不够干净”——可能会在前后多出说明文字、注释、甚至中途缺少引号或逗号,从而导致 json.loads() 报错。

告别繁琐解析:用 Pydantic 的 model_validate_json 优雅处理 JSON 数据

· 阅读需 6 分钟

前言

在使用 Pydantic 构建 Python 项目时,我们经常需要将 JSON 数据转换为模型实例。传统的方式通常是先用 json.loads() 将字符串解析成字典,再通过 Model(**data) 初始化对象。
而从 Pydantic v2 开始,引入了一个更高效、更简洁的新方法:model_validate_json()
本文将带你深入理解它的用法、优势、与传统方式的区别,以及如何优雅地处理异常。

TypeScript中的 async 的用法

· 阅读需 4 分钟

typescript 中,异步函数 async 是一种特殊类型的函数,它可以返回一个 Promise 对象。异步函数使用 async 关键字声明,并使用 await 关键字等待 Promise 对象的完成。

下面详细记录一下 typescript 中的异步函数用法

使用agent-chat-ui 调试 langgraph

· 阅读需 7 分钟

在之前的文章中,使用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]

还在自己开发代码执行沙箱吗?试试langchain 官方的这个沙箱吧

· 阅读需 6 分钟

在大模型agent 开发过程中,经常会遇到需要代码执行的操作,以往我们会单独创建一个沙箱,对外暴露一个web 端口,接受用户的代码,将执行结果返回给调用端,这种方式是一种比较安全的方式,但是需要开发沙箱服务,且还要返回符合大模型规范的内容。

langchain 团队近期开源了一个沙箱服务,专门用于执行python 代码,且这个项目和langchain 生态相结合,可以很方便的开发出代码执行工具。

项目地址 https://github.com/langchain-ai/langchain-sandbox

让我们来看一下它的使用吧。

如何使用uv更新项目依赖

· 阅读需 4 分钟

使用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"

pip install fastapi[standard] 中的 "[standard] " 是什么东西?

· 阅读需 3 分钟

我们在python 中安装第三方包的时候经常使用 pip 安装 常见的命令有

pip install requests
pip install httpx

但是你应该也见过下面这样的命令

image.png

这个是fastapi 官方文档首页提示的安装命令,你是否会好奇,这里为什么会有个 [standard]? 它和直接安装 pip install fastapi 有什么区别?

类似的还有

pip insall mcp[cli]
pip install crewai_tool[mcp]

使用 uv 也可以这样

uv add mcp[cli]
uv add crewai_tool[mcp]

接下来让我们一起看一下这个中括号是什么东西。

为你的mcp server 添加认证功能

· 阅读需 4 分钟

使用 python 开发mcp server 非常简单,但是官方文档对于在sse 或者 streamable 服务里如何添加认证写的很不清晰,我们可以非常快速的开发一个mcp server

from mcp.server.fastmcp import FastMCP
import datetime

mcp = FastMCP("simple-mcp-server")

@mcp.tool(name="获取当前时间", description="获取当前时间")
async def get_current_time() -> str:
return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")


def run():
mcp.run(transport="sse")

if __name__ == "__main__":
run()

以上是一个获取当前时间的mcp server ,很简单,只作为演示,但是如果我们不想让所有人都可以访问,需要添加一些认证信息,目前来讲,由于FastMCP 封装的太高级了,不太好添加,官方有提供基于 OAuth 的认证方式,但是有点复杂,我还没有测试成功过,本文介绍一种简单的在header 中添加认证信息。

这里分别演示 SSE 和 streamable 两种类型如何改造,原理差不太多, 通过创建一个自定义的中间件,在请求处理之前获取一下header 中的 Authorization 参数。

从零开始使用ADK开发agent智能体(2)-多agent开发

· 阅读需 7 分钟

上一篇文章我们构建了一个天气查询的agent,这个agent 功能比较单一,只能完成天气的查询,一个功能丰富的智能体系统,应该可以做很多事情,比如一个学术研究系统,会有信息搜索,文章总结,而信息搜索可能会使用到google 搜索,学术搜索,api 调用,RAG 检索等工具,文章总结可能包含大纲生成,图片生成,文章总结等等工具,且不同的agent 可能用到不同的模型,协调器的模型需要强大的规划推理模型,画图的agnet需要文生图的模型,文本总结可能一般的模型就可以胜任,这也是处于成本的考虑,不同的agent 只关注自身能力擅长的工作,对于复杂的系统,可能会由数量非常多的拥有不同工具能力的agent组成。

本文让我们来跟着官方文档尝试构建一个多agent 系统,我们在之前的天气查询agent 基础之上添加以下功能

  1. 不同的agent 使用不同的模型
  2. 添加子agent 功能
  3. 实现代理之间的智能委派