跳转至

Blog

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

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

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

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

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

如何使用uv更新项目依赖

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

把 openai 的 agents 运行起来可真费劲

最近看各种 agent 框架有点上头,查看openai 自己的agent 框架文档时,觉得好简单,于是就想实践一下,可是真正操作起来却是困难重重。。。

下面记录一下遇到的各种问题。

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

我们在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 添加认证功能

使用 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开发

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

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

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

从零开始使用ADK开发agent(1)-单agent开发

目前市场上有很多的agent 框架,如 autogen,langgraph,crewai,agno 等等,不同的框架对于agent 的实现有些差异,有的框架侧重点在流程编排如 langGraph,有的框架提供很多内置的工具如crewai,但总体而言,这些agent 框架的基本能力包含工具调用,agent 协同。

前段时间 google 提出了A2A 协议,意在统一这些框架直接的交互方式。本系列我准备从零开始学习一下agent 的开发。

框架我选择了google 的 adk,一来这个框架使用起来比较简单,二来这个框架由google开发维护,对于A2A 协议有着很好的支持。

从零开始使用n8n-环境搭建与快速入门

n8n 最近的热度很高,这里不想做太多的介绍,最近也在使用n8n 做些项目,所以也从基础开始记录以下学习的过程。

环境搭建

命令行运行

npx n8n

docker 运行

1
2
3
docker volume create n8n_data

docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

自己动手搭建 uv python 智能代理站

之前有介绍在国内使用 uv 如何设置代理加速python 包的下载,在安装python 时,当时介绍了国内目前只有一个南京大学镜像站,https://mirror.nju.edu.cn/github-release/indygreg/python-build-standalone/, 这个下载站只镜像了 uv 最新的release 文件,所以对于之前月份的文件,如果使用南京大学下载站就会下载失败,本文介绍一种使用海外云服务搭建uv python 的下载代理站实现可以正常下载安装 uv python 的实现方案。

前言:为什么我们需要这个方案?

作为一名 Python 开发者,你一定遇到过这样的烦恼:想用超快的 uv 工具安装 Python,却发现国内访问 GitHub 慢如蜗牛,之前介绍过国内只有南京大学镜像站可用于加速下载,但该镜像站仅镜像了 uv 最新的 release 文件。别担心!今天我要分享的解决方案,能让你像使用国内镜像站一样流畅地安装任意版本的 uv Python!本文将详细介绍一种使用海外云服务搭建 uv Python 下载代理站的实现方案,让你轻松解决下载难题