原文:https://mp.weixin.qq.com/s/KjAS4gDjAzWtmHkBLoo64Q
告别AI开发痛点!Parlant让大模型指令遵循不再是难题
parlant 是一个专注于控制能力的LLM代理工具。简单讲,它让大语言模型像智能助手一样执行实际任务,快速部署到真实场景中。适用人群:开发者、自动化工程师、AI应用创业者。
项目地址:https://github.com/emcie-co/parlant
主要语言:Python
stars: 14.3k
https://github.com/emcie-co/parlant/blob/develop/docs/demo.gif?raw=true
项目概述
Parlant 是一个 AI 代理框架,旨在解决开发者在构建生产 AI 代理时遇到的痛点,确保大语言模型(LLM)遵循指令,让 AI 代理能按照业务需求准确运行。
核心功能
- 规则确保遵循:与传统依赖系统提示不同,Parlant 可通过创建准则来确保 LLM 遵循规则。例如,当客户询问退款问题时,能依据准则检查订单状态。
- 多方面定制功能
- Journeys:定义清晰的客户旅程,让代理在每个步骤做出相应响应。
- Behavioral Guidelines:用自然语言轻松构建代理行为,系统会根据上下文匹配相关元素。
- Tool Use:将外部 API、数据获取器或后端服务与特定交互事件关联。
- Domain Adaptation:教授代理特定领域的术语,以生成个性化响应。
- Canned Responses:使用响应模板消除幻觉,保证回复风格的一致性。
- Explainability:了解每个准则匹配和遵循的原因及时间。
优势
- 可靠的规则遵循:避免传统方法中 LLM 忽略系统提示、产生幻觉响应等问题,确保代理在实际应用中按规则运行。
- 易于使用:使用自然语言定义规则和控制代理行为,降低开发难度。
- 可扩展性:通过添加准则来扩展代理功能,而非依赖复杂的提示工程。
- 生产就绪:从一开始就适用于生产环境,减少调试和优化的时间。
- 企业级特性:具备会话旅程引导、动态准则匹配、可靠工具集成、会话分析、迭代优化、内置防护栏、React 聊天 UI 组件以及全解释性等功能。
代码示例
以下是一个简单的天气助手示例,展示了如何使用 Parlant 创建一个具有规则遵循行为的 AI 代理:
import parlant.sdk as p
@p.tool
async def get_weather(context: p.ToolContext, city: str) -> p.ToolResult:
# 这里应实现你的天气 API 逻辑
return p.ToolResult(f"Sunny, 72°F in {city}")
@p.tool
async def get_datetime(context: p.ToolContext) -> p.ToolResult:
from datetime import datetime
return p.ToolResult(datetime.now())
async def main():
async with p.Server() as server:
agent = await server.create_agent(
name="WeatherBot",
description="Helpful weather assistant"
)
await agent.create_variable(name="current-datetime", tool=get_datetime)
await agent.create_guideline(
condition="User asks about weather",
action="Get current weather and provide a friendly response with suggestions",
tools=[get_weather]
)
if __name__ == "__main__":
import asyncio
asyncio.run(main())
应用场景
- 金融服务:适用于合规优先的设计,具备内置风险管理功能。
- 医疗保健:可创建符合 HIPAA 标准的代理,保护患者数据。
- 电子商务:实现大规模客户服务和订单处理自动化。
- 法律科技:提供精确的法律指导和文档审查协助。
快速开始
通过 pip install parlant 即可安装,按照上述代码示例进行配置,就能快速启动一个具有规则遵循行为的 AI 代理。
惊!基于DWT - DCT - SVD的盲水印技术,抗多种攻击还能多形式嵌入!
blind_watermark 是一个实现盲水印嵌入与提取的 Python 工具库。简单讲,它能将水印信息隐藏在图片中,且提取水印时不需要原始图片对比,保护版权更便捷。适用人群:开发者、数字内容创作者、需要版权保护的技术人员。
项目地址:https://github.com/guofei9987/blind_watermark
主要语言:Python
stars: 8k
仓库概述
blind-watermark 是一个基于DWT - DCT - SVD算法实现盲水印功能的Python库。盲水印是指在提取水印时不需要原始图像,只需要带水印的图像就能提取出嵌入的水印信息。
核心功能
- 水印嵌入:支持将文本、图像、比特数组等不同形式的水印信息嵌入到图像中。
- 水印提取:可以从带有水印的图像中提取出之前嵌入的水印信息。
- 抗攻击能力:对旋转、裁剪、遮挡、缩放、椒盐噪声、亮度调整等常见的图像攻击方式具有较好的鲁棒性,能在图像经过这些攻击后仍准确提取水印。
- 并发处理 :支持多进程并发处理,可通过
processes参数指定进程数量,默认使用所有可用进程。
代码架构特点
- 提供了简单易用的Python类
WaterMark,通过该类的方法可以方便地实现水印的读取、嵌入和提取操作。 - 代码结构清晰,在
examples目录下提供了多种使用示例,包括嵌入文本、图像和比特数组的示例代码,方便用户参考。
安装方式
- 稳定版本 :使用
pip install blind-watermark命令进行安装。 - 开发版本 :先通过
git clone git@github.com:guofei9987/blind_watermark.git克隆仓库,然后进入仓库目录cd blind_watermark,最后使用pip install .进行安装。
使用方法
命令行使用
- 嵌入水印 :
blind_watermark --embed --pwd 1234 examples/pic/ori_img.jpeg "watermark text" examples/output/embedded.png - 提取水印 :
blind_watermark --extract --pwd 1234 --wm_shape 111 examples/output/embedded.png
Python代码使用
-
嵌入文本水印示例
from blind_watermark import WaterMark
bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.read_img('pic/ori_img.jpg')
wm = '@guofei9987 开源万岁!'
bwm1.read_wm(wm, mode='str')
bwm1.embed('output/embedded.png')
len_wm = len(bwm1.wm_bit)
print('Put down the length of wm_bit {len_wm}'.format(len_wm=len_wm)) -
提取文本水印示例
bwm1 = WaterMark(password_img=1, password_wm=1)
wm_extract = bwm1.extract('output/embedded.png', wm_shape=len_wm, mode='str')
print(wm_extract)
优势
- 鲁棒性强:能有效抵抗多种常见的图像攻击,保证水印信息的可提取性。
- 使用方便:提供了命令行和Python代码两种使用方式,且代码示例丰富,降低了用户的使用门槛。
- 跨平台支持:支持Windows、Linux和macOS等多种操作系统。
应用场景
- 版权保护:在图片中嵌入版权信息,当图片被非法使用时,可以通过提取水印来证明版权归属。
- 数据溯源:在图像中嵌入特定的标识信息,方便对图像的来源和传播路径进行追溯。
- 信息隐藏:将一些敏感信息以水印的形式隐藏在图像中,实现信息的秘密传递。
相关项目
- text_blind_watermark :用于将消息嵌入到文本中的盲水印项目,仓库地址为 https://github.com/guofei9987/text_blind_watermark。
- HideInfo :可以将信息隐藏为图像、声音或文本的项目,仓库地址为 https://github.com/guofei9987/HideInfo。
文档资料
- 英文文档:https://BlindWatermark.github.io/blind_watermark/#/en/
- 中文文档:https://BlindWatermark.github.io/blind_watermark/#/zh/
- 中文README:README_cn.md
Rust语言打造Servo浏览器引擎,多平台搭建指南大揭秘!
servo 是一个基于Rust开发的轻量级高性能浏览器引擎。简单讲,它能让开发者将网页技术轻松嵌入到自己的应用中,同时保证运行速度和稳定性。适用人群:系统开发者、浏览器技术研究者、Rust语言爱好者
项目地址:https://github.com/servo/servo
主要语言:Rust
stars: 32.8k
项目概述
Servo是一个用Rust语言编写的原型网络浏览器引擎,目前可在64位的macOS、Linux、Windows、OpenHarmony以及Android系统上进行开发。该项目欢迎所有人贡献代码。
核心功能
作为浏览器引擎,Servo的核心功能是解析和渲染网页,它能够处理HTML、CSS、JavaScript等网页技术,将网页内容正确地展示给用户。
优势
- 使用Rust语言:Rust语言具有内存安全、并发性能好等特点,这使得Servo在性能和安全性上有较好的表现。
- 多平台支持:支持多种主流操作系统和新兴的OpenHarmony系统,具有广泛的适用性。
- 社区开放:欢迎所有人贡献代码,有利于项目的快速发展和完善。
可能的应用场景
- 开发新型浏览器:开发者可以基于Servo引擎开发具有特色功能的浏览器。
- 嵌入式设备:由于其多平台支持,可用于在嵌入式设备上实现网页浏览功能。
文档与交流
- 文档 :可以查看Servo Book获取详细的文档说明。
- 新闻和指南 :访问servo.org获取项目的新闻和指南。
构建说明
不同操作系统的构建步骤有所不同:
- macOS
- Linux
- 安装
curl,不同发行版安装命令不同:- Arch:
sudo pacman -S --needed curl - Debian、Ubuntu:
sudo apt install curl - Fedora:
sudo dnf install curl - Gentoo:
sudo emerge net-misc/curl
- Arch:
- 安装
uv:curl -LsSf https://astral.sh/uv/install.sh | sh - 安装
rustup:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - 重启shell确保
cargo可用。 - 安装其他依赖:
./mach bootstrap - 构建servoshell:
./mach build
- 安装
- Windows
- Android
- 设置环境变量
ANDROID_SDK_ROOT和ANDROID_NDK_ROOT。 - 安装最新的Android命令行工具。
- 运行命令安装必要组件。
- 按照对应平台的构建说明进行操作。
- 设置环境变量
- OpenHarmony
- 按照对应平台的说明准备环境。
- 根据目标发行版设置不同的环境变量。
- 参考[Building for OpenHarmony]的详细说明。
- 通过
-flavor=<default|harmonyos>修改目标发行版。