
原文: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 datetimereturn 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 asyncioasyncio.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 WaterMarkbwm1 = 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