震惊!这个框架让大模型从“脑死亡“到“听话如狗“,程序员狂喜!

将 ChatGPT App 集成到现有产品与 SDK/MCP 迁移 本文探讨在现有系统上集成与迁移MCP/Apps SDK的实践路径,强调将MCP视为对旧后端的轻量适配器,而非重构新系统。核心原则包括:以单一事实来源(如Zod)统一数据模式,通过版本化工具(如_v2)实现安全演进;严格测试契约与认证(scopes、.well-known);善用注解(destructiveHint等)引导模型行为;并遵循金丝雀发布、黄金用例验证的工程流程。避免常见错误如模式冗余、隐性破坏变更、忽视可观测性,确保系统在长期演进中稳定可靠。 阅读详情

如何避免大模型面对200条规则直接崩溃?

上班第一天,领导让你完成一个任务,要求一小时搞定

但这个任务附带200个业务规则,50个工具和30个demo

你会怎么办?

当然是:

那么问题来了,为什么会有人觉得,人都办不到的要求,把指令一股脑塞给大模型做Agent

它就能毫无偏差的执行、完美交付?

既然AI也办不到,那该怎么办?

推荐一个GitHub 最近很火的开源agent框架Parlant。

相比LangChain / LlamaIndex 等传统框架只能静态一股脑注入所有上下文,Parlant可以通过动态规则注入、自我批判机制以及条件化工具调用,让agent变得可控可解释。

那么,Parlant是如何设计的,我们如何将其结合Milvus用于生产级agent?本文将一一解释。

01

传统框架的不足与Parlant的创新

传统的几百条规则、几十个工具与demo式饱和式上下文注入,往往在小规模测试中表现还不错,但在生产环境中就会立刻暴露三个致命问题:

规则冲突无法解决:当多条规则同时适用时,LLM会随机选择或混合执行,导致行为不可预测。例如,一个电商Agent同时面对"VIP用户优先处理"和"高额订单需要二次确认"两条规则时,执行优先级完全依赖模型的随机性。

边缘情况覆盖不足:你无法预知所有可能的用户输入组合。当遇到训练数据中罕见的场景时,Agent会退化到通用回复模式,丢失业务特异性。

调试与优化成本高昂:当Agent行为出现问题时,你无法确定是哪条规则失效了,只能重新调整整个系统提示,然后再次进行全量测试。

针对以上问题,Parlant引入了动态****规则注入:将规则定义与规则执行分离,通过动态匹配机制确保只有最相关的规则被注入到LLM上下文中。

这个设计理念类似于现代Web框架中的路由系统——你不会在每个请求中加载所有路由处理器,而是根据URL动态匹配对应的处理逻辑。

具体来说,Parlant的核心是Guidelines系统,每条指南包含三个要素:

await agent.create_guideline(
    condition="用户询问退款且订单金额超过500元",
    action="先调用订单状态检查工具,确认是否符合退款条件,然后提供详细的退款流程说明",
    tools=[check_order_status, calculate_refund_amount]
)

Condition(条件):用自然语言描述触发场景,Parlant会将其转换为语义向量进行匹配。

Action(行动):明确定义Agent应该如何响应,这部分会在条件匹配时被注入到LLM上下文。

Tools(工具):关联的外部函数,只有在指南激活时才会暴露给Agent。

这个设计的精妙之处在于:Parlant在每次用户输入时,会先进行一次轻量级的指南匹配过程,只将相关的3-5条指南注入到LLM上下文中。这样既保持了上下文的简洁性,又确保了规则的精准执行。

在此基础上,Parlant还引入了自我批判机制作为双重保险,来提升规则遵循的一致性与可控性。其流程分为三步走:

  1. 生成候选回复:基于匹配的指南和对话上下文生成初步回复
  2. 合规性检查:将候选回复与激活的指南进行对比,验证是否完全遵循
  3. 修正或确认:如果发现偏差,触发修正流程;如果符合要求,输出最终回复

此外,传统Agent框架会将所有可用工具暴露给LLM,从而导致两个问题:一是上下文膨胀,二是工具误用。Parlant通过将工具与指南绑定,实现了条件化执行:

# 只有当"用户要转账"这个条件满足时,才会暴露余额查询工具
await agent.create_guideline(
    condition="用户想要进行转账操作",
    action="首先检查账户余额,如果余额低于500元,提醒可能产生透支费用",
    tools=[get_user_account_balance]
)

这种设计确保了工具调用的精准性,避免了Agent在不恰当的时机调用敏感API。

02

动态规则注入的关键:Milvus

当我们深入Parlant的指南匹配机制时,会发现一个核心技术挑战:如何在毫秒级延迟内,从数百甚至数千条指南中找到与当前对话最相关的3-5条?这就是向量数据库发挥作用的场景。

(1)语义匹配的技术实现

Parlant的指南匹配本质上是一个语义检索问题。系统会将每条指南的condition字段转换为向量嵌入(Embedding),当用户输入到达时:

第一步,将用户消息和对话历史编码为查询向量

第二步,在指南向量库中执行相似度搜索

第三步,返回Top-K最相关的指南

第四步,将这些指南注入到LLM上下文中

这个过程需要向量数据库具备三个核心能力:高性能的近似最近邻搜索(ANN)、灵活的元数据过滤、以及实时的向量更新。Milvus在这三个维度上都提供了生产级的支持。

(2)Milvus在Agent系统中的实际应用

以一个金融服务Agent为例,假设系统中定义了800条业务指南,覆盖账户查询、转账、理财产品咨询等场景。使用Milvus作为指南存储层的架构如下:

from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType
import parlant.sdk as p
# 连接Milvus
connections.connect(host="localhost", port="19530")
# 定义指南集合的Schema
fields = [
    FieldSchema(name="guideline_id", dtype=DataType.VARCHAR, max_length=100, is_primary=True),
    FieldSchema(name="condition_vector", dtype=DataType.FLOAT_VECTOR, dim=768),
    FieldSchema(name="condition_text", dtype=DataType.VARCHAR, max_length=1000),
    FieldSchema(name="action_text", dtype=DataType.VARCHAR, max_length=2000),
    FieldSchema(name="priority", dtype=DataType.INT64),
    FieldSchema(name="business_domain", dtype=DataType.VARCHAR, max_length=50)
]
schema = CollectionSchema(fields=fields, description="Agent Guidelines")
guideline_collection = Collection(name="agent_guidelines", schema=schema)
# 创建HNSW索引以实现高性能检索
index_params = {
    "index_type": "HNSW",
    "metric_type": "COSINE",
    "params": {"M": 16, "efConstruction": 200}
}
guideline_collection.create_index(field_name="condition_vector", index_params=index_params)
在实际运行时,当用户输入"我想把10万元转到我妈妈的账户"时,系统会:
  1. 向量化查询:将用户输入转换为768维向量
  2. 混合检索:在Milvus中执行向量相似度搜索,同时应用元数据过滤(如business_domain=“transfer”)
  3. 结果排序:根据相似度分数和priority字段综合排序
  4. 上下文注入:将Top-3匹配的指南的action_text注入到Parlant Agent的上下文中

这个过程在Milvus中的P99延迟通常低于15ms,即使指南库规模达到10万条。相比之下,如果使用传统关系型数据库存储指南并通过关键词匹配,延迟会超过200ms,且匹配精度显著下降。

(3)长期记忆与个性化的实现

Milvus的价值不仅限于指南匹配。在需要长期记忆的Agent场景中,Milvus可以存储用户的历史交互向量,实现个性化响应:

# 存储用户交互历史
user_memory_fields = [
    FieldSchema(name="interaction_id", dtype=DataType.VARCHAR, max_length=100, is_primary=True),
    FieldSchema(name="user_id", dtype=DataType.VARCHAR, max_length=50),
    FieldSchema(name="interaction_vector", dtype=DataType.FLOAT_VECTOR, dim=768),
    FieldSchema(name="interaction_summary", dtype=DataType.VARCHAR, max_length=500),
    FieldSchema(name="timestamp", dtype=DataType.INT64)
]
memory_collection = Collection(name="user_memory", schema=CollectionSchema(user_memory_fields))

用户再次访问时,Agent可以从Milvus中检索相关的历史交互,提供连贯的对话体验。例如,用户上周咨询过理财产品,本周再次访问时,Agent可以主动询问"您对上次了解的那款基金产品还有疑问吗?"

(3)性能优化的关键参数

在生产环境中部署Milvus支持的Agent系统时,需要关注几个关键参数:

索引类型选择:HNSW适合高召回率场景(金融、医疗),IVF_FLAT适合超大规模但对召回率要求相对宽松的场景(电商推荐)。

分片策略:当指南库超过100万条时,建议使用Milvus的分区(Partition)功能按业务域分片,减少检索范围。

缓存配置:对于高频访问的指南(如常见问题处理),可以利用Milvus的查询结果缓存,将延迟降低到5ms以内。

03

Parlant + MilvusLite五分钟demo

本demo主要展示Parlant的核心能力:通过智能准则让LLM普通问题直接回答,专业问题自动触发知识库检索并提供结构化的可追溯回答。

环境准备:

1.Parlant GitHub: https://github.com/emcie-co/parlant

2.Parlant文档: https://parlant.io/docs

3.python3.10+

4.OpenAI_key

5.MlivusLite

1.依赖安装

# 安装必要的Python包
pip install pymilvus parlant openai
# 或者如果使用conda环境
conda activate your_env_name
pip install pymilvus parlant openai

2.环境变量配置

# 设置OpenAI API密钥
export OPENAI_API_KEY="your_openai_api_key_here"
# 验证环境变量是否设置成功
echo $OPENAI_API_KEY

3.核心代码实现

3.1 自定义嵌入器 (OpenAIEmbedder)

class OpenAIEmbedder(p.Embedder):
    # 实现文本向量化,支持超时和重试机制
    # 维度: 1536 (text-embedding-3-small)
    # 超时设置: 60秒,最大重试2次

3.2知识库初始化

  • 创建Milvus集合 kb_articles
  • 插入示例数据(退款政策、换货政策、物流时间)
  • 建立HNSW索引以加速检索

3.3向量检索工具

@p.tool
async def vector_search(query: str, top_k: int = 5, min_score: float = 0.35):
    # 1. 将用户查询转换为向量
    # 2. 在Milvus中执行相似度搜索
    # 3. 返回相关度超过阈值的结果

3.4Parlant Agent配置

  • 准则1 : 对于事实性/政策性问题,必须先执行向量检索
  • 准则2 : 有证据时使用结构化模板回复(摘要+要点+来源)
# 核心准则 1:当用户问事实类/政策类问题,必须先做向量检索
        await agent.create_guideline(
            condition="User asks a factual question about policy, refund, exchange, or shipping",
            action=(
                "Call vector_search with the user's query. "
                "If evidence is found, synthesize an answer by quoting key sentences and cite doc_id/title. "
                "If evidence is insufficient, ask a clarifying question before answering."
            ),
            tools=[vector_search],
        )
        # 核心准则 2:当有证据时使用模板化回复,统一口径与风格
        await agent.create_guideline(
            condition="Evidence is available",
            action=(
                "Answer with the following template:\\n"
                "Summary: provide a concise conclusion.\\n"
                "Key points: 2-3 bullets distilled from evidence.\\n"
                "Sources: list doc_id and title.\\n"
                "Note: if confidence is low, state limitations and ask for clarification."
            ),
            tools=[],
        )

3.5完整代码

import os
import asyncio
import json
from typing import List, Dict, Any
import parlant.sdk as p
from pymilvus import MilvusClient, DataType
# 1) 环境变量:使用 OpenAI(默认生成模型 + 作为嵌入服务)
# 请确保已设置 OPENAI_API_KEY
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
if not OPENAI_API_KEY:
    raise RuntimeError("Please set OPENAI_API_KEY environment variable")
# 2) 初始化 Milvus Lite(本地内嵌,无需独立服务)
# MilvusClient 使用本地文件路径启用 Lite 模式(需 pymilvus>=2.x)
client = MilvusClient("./milvus_demo.db")  # Lite 模式使用本地文件路径
COLLECTION = "kb_articles"
# 3) 示例数据:三段政策或 FAQ(实际可从文件加载并分块)
DOCS = [
    {"doc_id": "POLICY-001", "title": "Refund Policy", "chunk": "Refunds are available within 30 days of purchase if the product is unused."},
    {"doc_id": "POLICY-002", "title": "Exchange Policy", "chunk": "Exchanges are permitted within 15 days; original packaging required."},
    {"doc_id": "FAQ-101", "title": "Shipping Time", "chunk": "Standard shipping usually takes 3–5 business days within the country."},
]
# 4) 使用 OpenAI 生成嵌入(你也可以替换为别的嵌入服务)
# 这里我们通过 Parlant 的内置 OpenAI embedder(更简单),也可直接用 openai SDK。
class OpenAIEmbedder(p.Embedder):
    async def embed(self, texts: List[str], hints: Dict[str, Any] = {}) -> p.EmbeddingResult:
        # 使用 OpenAI API 进行文本嵌入,优化超时和重试设置
        import openai
        try:
            client = openai.AsyncOpenAI(
                api_key=OPENAI_API_KEY,
                timeout=60.0,  # 增加到60秒超时
                max_retries=2  # 设置重试次数
            )
            print(f"正在生成 {len(texts)} 个文本的嵌入向量...")
            response = await client.embeddings.create(
                model="text-embedding-3-small",
                input=texts
            )
            vectors = [data.embedding for data in response.data]
            print(f"成功生成 {len(vectors)} 个嵌入向量")
            return p.EmbeddingResult(vectors=vectors)
        except Exception as e:
            print(f"OpenAI API调用失败: {e}")
            # 返回模拟向量用于测试Milvus连接
            print("使用模拟向量进行测试...")
            import random
            vectors = [[random.random() for _ in range(1536)] for _ in texts]
            return p.EmbeddingResult(vectors=vectors)
    @property
    def id(self) -> str:
        return "text-embedding-3-small"
    @property
    def max_tokens(self) -> int:
        return 8192
    @property
    def tokenizer(self) -> p.EstimatingTokenizer:
        from parlant.core.nlp.tokenization import ZeroEstimatingTokenizer
        return ZeroEstimatingTokenizer()
    @property
    def dimensions(self) -> int:
        return 1536
embedder = OpenAIEmbedder()
async def ensure_collection_and_load():
    # 创建集合(schema:主键、向量、附加字段)
    if not client.has_collection(COLLECTION):
        client.create_collection(
            collection_name=COLLECTION,
            dimension=len((await embedder.embed(["dimension_probe"])).vectors[0]),
            # 使用默认度量(COSINE);如需变更可指定 metric_type="COSINE"
            auto_id=True,
        )
        # 创建索引以加速检索(HNSW 作为示例)
        client.create_index(
            collection_name=COLLECTION,
            field_name="vector",
            index_type="HNSW",
            metric_type="COSINE",
            params={"M": 32, "efConstruction": 200}
        )
    # 插入数据(若已存在可跳过;这里简单处理为幂等)
    # 生成嵌入
    chunks = [d["chunk"] for d in DOCS]
    embedding_result = await embedder.embed(chunks)
    vectors = embedding_result.vectors
    # 检查是否已存在相同 doc_id;演示用,实际应做更严格的去重
    # 这里直接插入。生产环境请使用 upsert 逻辑或显式主键
    client.insert(
        COLLECTION,
        data=[
            {"vector": vectors[i], "doc_id": DOCS[i]["doc_id"], "title": DOCS[i]["title"], "chunk": DOCS[i]["chunk"]}
            for i in range(len(DOCS))
        ],
    )
    # 加载到内存
    client.load_collection(COLLECTION)
# 5) 定义向量检索工具(Parlant 的 Tool)
@p.tool
async def vector_search(context: p.ToolContext, query: str, top_k: int = 5, min_score: float = 0.35) -> p.ToolResult:
    # 5.1 生成查询向量
    embed_res = await embedder.embed([query])
    qvec = embed_res.vectors[0]
    # 5.2 Milvus 检索
    results = client.search(
        collection_name=COLLECTION,
        data=[qvec],
        limit=top_k,
        output_fields=["doc_id", "title", "chunk"],
        search_params={"metric_type": "COSINE", "params": {"ef": 128}},
    )
    # 5.3 组装结构化证据并做分数阈值筛选
    hits = []
    for hit in results[0]:
        score = hit["distance"] if "distance" in hit else hit.get("score", 0.0)
        if score >= min_score:
            hits.append({
                "doc_id": hit["entity"]["doc_id"],
                "title": hit["entity"]["title"],
                "chunk": hit["entity"]["chunk"],
                "score": float(score),
            })
    return p.ToolResult({"evidence": hits})
# 6) 运行 Parlant Server,并创建 Agent + 行为准则
async def main():
    await ensure_collection_and_load()
    async with p.Server() as server:
        agent = await server.create_agent(
            name="Policy Assistant",
            description="Rule-controlled RAG assistant with Milvus Lite",
        )
        # 示例变量:当前时间(可用于模板或日志)
        @p.tool
        async def get_datetime(context: p.ToolContext) -> p.ToolResult:
            from datetime import datetime
            return p.ToolResult({"now": datetime.now().isoformat()})
        await agent.create_variable(name="current-datetime", tool=get_datetime)
        # 核心准则 1:当用户问事实类/政策类问题,必须先做向量检索
        await agent.create_guideline(
            condition="User asks a factual question about policy, refund, exchange, or shipping",
            action=(
                "Call vector_search with the user's query. "
                "If evidence is found, synthesize an answer by quoting key sentences and cite doc_id/title. "
                "If evidence is insufficient, ask a clarifying question before answering."
            ),
            tools=[vector_search],
        )
        # 核心准则 2:当有证据时使用模板化回复,统一口径与风格
        await agent.create_guideline(
            condition="Evidence is available",
            action=(
                "Answer with the following template:\\n"
                "Summary: provide a concise conclusion.\\n"
                "Key points: 2-3 bullets distilled from evidence.\\n"
                "Sources: list doc_id and title.\\n"
                "Note: if confidence is low, state limitations and ask for clarification."
            ),
            tools=[],
        )
        # 提示:本地 Playground 在下述地址
        print("Playground: <http://localhost:8800>")
if __name__ == "__main__":
    asyncio.run(main())

4.运行代码

# 运行主程序
python main.py

4.1访问前端

<http://localhost:8800>

5.访问测试

5.1测试一

##一般性问题(直接LLM回答)
请介绍一下机器学习?

5.2测试二

#触发向量检索+规则
我买的东西不满意,可以退款吗?

我的包裹什么时候能收到?

测试结果完全符合预期。对于一般性问题(如机器学习介绍),系统直接使用LLM给出回答;而对于专业问题(如退款和物流咨询),系统自动触发向量检索并按照结构化模板提供可追溯的答案,验证了Parlant的动态准则机制和Milvus的语义检索能力。

04

写在结尾

很多开发者会问:Parlant与现有的Agent框架(如LangChain、LlamaIndex)有什么区别?

LangChain/LlamaIndex:通用型框架,提供丰富的组件和集成,适合快速原型开发和研究探索。但在生产环境中,需要开发者自行实现规则管理、可靠性保障等机制。

Parlant:专注于生产级Agent的控制与合规,开箱即用的指南系统、自我批判机制和可解释性工具。适合需要高可靠性的面向客户场景(金融、医疗、法律)。

两者可以互补使用:用LangChain构建复杂的数据处理Pipeline,用Parlant封装最终面向用户的交互层。而Milvus这样的向量数据库,正是这个pipeline中不可或缺的基础设施。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

如何解决 ChatGPT 在科研学术写作中“不说人话”? 短视频真正改变的,是知识抵达人的方式。真正该改的是信息顺序:先给结论,再讲原因和证据,最后补充必要的边界,边界在这里是护栏,不该挡在正文前面。读者还没质疑,例外和边界已经先摆好了,不敢把话说透,真正好的文章会先把核心判断稳稳立住,再补充复杂性,不会让读者猜半天你到底想说什么。观点还没展开,就先回应并不存在的反对意见,大量篇幅都在证明我没这么说,不过度防御的文章都是前者忙着管理风险,后者才是在推进认识。逐句查看文章中的转折、退让和补充说明,追问一句,如果拿掉这句话,事实是否仍然准确,推理是否依然成立。 阅读详情

相关推荐

Bright Data ChatGPT 搜索抓取器(Python)

使用 GitHub 登录,然后 fork 该仓库开始进行更改。本项目提供一个使用 Bright Data Web Scraper API 抓取结果的简易 Python 样板代码。

亮数据 Bright Data 的博客 327

Parlant性能基准测试:与其他框架的对比分析

在构建面向客户的AI代理时,开发者面临着一个关键矛盾:**规则遵循的准确性**与**响应性能**之间的平衡。传统AI框架往往在这两个维度上做出妥协: - **纯提示工程方案**:响应快但规则遵循不可靠 - **复杂规则引擎**:规则准确但响应延迟严重 - **混合方案**:在两者间寻找平衡点,但实现复杂 Parlant框架通过创新的架构设计,在确保规则遵循的同时,实现了卓越的性能表现。本文将深...

gitblog_00532的博客 799

01-嵌入式入门-如何看原理图

最近由于找到的工作是偏于嵌入式方向,因此又重新开始学习已经丢弃两年的知识。新手学习知识感觉有一个通病:喜欢收集各种各样的视频、资料,网盘里收藏一大堆,但是却从没有打开看过,到头来还是个小白,只听说过几个概念,而实际却是不知所云,这就是所谓的"学习综合征"。而我也是其中的一员,最近痛定思痛,就准备根据一套资料沉下心学习下去,不再进入收集资料的大军。...

weixin_34010566的博客 4484

三大AI Agent开发框架深度对比与选型指南

本文深度剖析了LangGraph、Agno和Parlant三大主流AI Agent框架的架构特性、性能表现及适用场景。LangGraph以图状态机架构提供极高灵活性和定制能力,适合复杂工作流;Agno凭借三层分离架构实现微秒级实例化,适合大规模高性能部署;Parlant通过行为建模引擎确保可靠性和合规性,适合金融医疗等高要求行业。文章提供多维度对比和基于场景的选型决策树,帮助开发者根据业务需求选择最适合的框架。

大模型训练 1519

基于Gardner环的QPSK定时同步MATLAB仿真:四倍采样与多场景性能分析

本文详细介绍了基于Gardner环的QPSK定时同步MATLAB仿真方法,重点分析了四倍采样技术在定时同步中的应用与性能优化。通过MATLAB代码实例展示了Gardner环的实现原理、多场景性能分析及常见问题解决方案,为数字通信系统的定时同步设计提供实用参考。

weixin_29083475的博客 373

R爬虫RSelenium环境搭建及简单应用

这是鄙人自己实践的一种可行的环境搭建,我会尽量详细的写下大家步骤。

weixin_44349986的博客 2013

ChatGPT 广告技术栈架构拆解:多轮意图、LLM 工具编排、ANN 召回与拍卖闭环

基于 OpenAI 官方工程文章,拆解 ChatGPT 广告系统如何用有状态会话理解多轮意图,以独立链路隔离自然回答,再由 LLM 编排召回、过滤、相关性评分、拍卖和最终交付,并给出可复用的超时、观测、安全与反馈闭环设计。

jerry764的博客 375

kali虚拟机-----破解wifi密码(WiFi渗透)

文章目录一、将无线网卡挂载到 虚拟机上二、查看是否挂载成功三、查看网卡是否支持监听模式四、检查文件监听影响并杀死影响五、开启无线监听模式六、开始监听七、开始抓包(新建一个命令窗口)八、对已连接的终端进行攻击,使它掉线重连,以此来获取数据包。(新建一个命令窗口)九、开始解密 一、将无线网卡挂载到 虚拟机上 可能出现的问题:在可移动设备处无法连接无线网卡; 解决:在虚拟机设置中将usb控制器设置成如图所示。 注意要先关闭虚拟机在设置。 二、查看是否挂载成功 使用ifconfig命令查看 三、查看网卡是

weixin_46471800的博客 1万+

ChatGPT Projects 使用教程:项目指令、文件管理与上下文复用

使用ChatGPT的Projects功能可高效处理长期任务,避免重复说明背景与要求。通过设置项目指令、上传参考文件、复用上下文,实现代码分析、文档维护等任务的持续优化。建议按任务类型建项目,配置简洁规则,重要结论存为独立文档,避免依赖记忆遗漏。适用于有固定流程、需多资料协作的场景,但不可替代Git版本管理。

carriedream的博客 289

Spring AI Alibaba实战训练营-13语音生成应用开发指南

本文介绍了如何基于Spring AI Alibaba创建DashScope语音应用,支持文本转语音(TTS)和语音转文本(STT)功能。主要内容包括:1)环境准备要求Java 17+、Maven 3.6+及阿里云DashScope API Key;2)通过Spring Initializr创建项目并配置相关依赖;3)设置API密钥的安全配置方法;4)实现语音合成的同步和流式功能,包括创建控制器类、调用API接口及保存语音文件。文章提供了详细的代码示例和配置说明,帮助开发者快速搭建语音处理应用。

program哲学 403

PCL 切片法实现点云模型的体积测量、面积测量(二)

通过PCL VTK进行切片法,实现点云模型的体积测量、面积测量。

weixin_43896283的博客 1711

《C++ 项目:手写大模型接入 SDK》ChatGPT接口设计(下):流式响应实现和测试

本文详细实现了ChatGPT ResponsesAPI的流式响应接口,重点解析了SSE半包缓冲处理的必要性及多事件类型(如response.output_text.delta、error等)的差异化处理逻辑。针对200状态码不等于调用成功的坑点,通过content_receiver回调捕获业务异常。基于抽象基类LLMProvider,仅需修改20%适配代码,即可完成新模型接入,验证了SDK架构的高扩展性与可维护性。

2501_91275995的博客 659

canoe安装完成开启之后因为VectorDeviceParams30_64.dll报错崩溃打不开...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1079

ChatGPT、Codex工程实战:数据库迁移脚本开发环境测试通过,为什么生产上线仍可能锁表甚至丢数据?

ChatGPT、Codex生成的数据库迁移脚本开发环境测试通过,为什么生产上线仍可能锁表甚至造成数据不一致?本文从Java订单系统生产变更切入,分析MySQL DDL、元数据锁、大批量数据回填、新旧版本兼容和数据迁移风险,并介绍Expand-Contract分阶段迁移方案。

lb654509656的博客 314

Python爬虫实战:中国土地市场网招拍挂数据抓取与分析

本文详细介绍了如何使用Python爬虫技术从中国土地市场网抓取土地招拍挂数据,并进行初步的数据分析与可视化。文章涵盖了爬虫的基本原理、反爬虫策略应对、数据清洗与存储、数据分析与可视化等多个方面,为土地市场研究者提供了一套完整的数据获取与分析解决方案。

2201_76125261的博客 684

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

姿势库 / 服装库 / 人像库一键填充到 ChatGPT、Gemini、豆包(无需 API Key,附安装教程)

一个用户脚本,在 ChatGPT、Gemini、Grok、豆包、通义千问、腾讯元宝、Kimi、即梦等页面里嵌入「参考库」面板,把姿势、服装、人像参考图和规范化提示词一键填入对话框。版权说明:脸库 CC0;姿势库、服装库禁止二次分发。脚本不含本地图片,只在运行时读取公开地址。

yjc_1111的专栏 227

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ChatGPT Images 2.6 实测解读:一句话直出 GIF,Flare 提速 46%,API 支持 2~64 帧动图

过去两年,AI 生图解决了"画得像不像""字写得对不对"的问题,但交付物始终是一张静态图。想让它动起来,通常要另外找视频模型,或者自己拆帧、用 PS、ffmpeg 合成 GIF——对运营、设计、做表情包的人来说,这一步既麻烦又容易翻车:帧之间画风跳变、角色走样、文件体积失控。这次 OpenAI 发布的,把这一步直接收进了生图本身:在对话里说一句"能做成 GIF 吗",返回的就是一张可循环播放的动图,而且生成后还能接着改。按 OpenAI 的说法,这是第一个原生直出 GIF 的主流生图产品。

JEECG官方博客 227

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ChatGPT Images 2.6 入门:保存角色参考图并生成循环 GIF

按官方 Images in ChatGPT 说明,介绍在 ChatGPT 中把照片存成角色参考并用 @名字复用,再用提示词或静图生成循环 GIF、打开后调速并保存分享的完整步骤。

死磕音视频 203

ChatGPT Images 2.6 商业落地与场景应用指南

本文聚焦电商与设计团队的视觉生产痛点,提出“人机协同”的AI高效工作流。通过十大实战场景,系统拆解商品图生成、海报自动化、风格一致性控制、提示词工程等关键环节,构建可复制、可量化的视觉生产管线。强调以标准化模板、模块化提示词与人机协作闭环,实现从构思到成图的极速落地,显著提升效率与质量,助力各行业实现视觉内容的智能化升级。

frt的博客 275

QVeris MCP 连接到 ChatGPT:让 AI 调用专业数据

一个远程地址,完成 OAuth 授权,把 QVeris 接进 ChatGPT。本文整理网页版、桌面端配置,并用 AAPL 报价查询验证连接。

QVeris_Friends的博客 205

在 Claude 中配置与使用图表编辑器MCP,把数据变成图表

ChartchooserMCP是基于ModelContextProtocol的图表生成服务,可将数据直接转化为Highcharts图表或仪表盘,集成于Claude与ChatGPT。通过简单配置,用户在对话中粘贴数据并回答几项问题,即可自动生成生产级图表。支持自然语言调整样式、类型与布局,显著提升可视化效率。关键技巧包括:保持表头清晰、明确分析目标、多指标需求直接请求仪表盘。配置后一次设置,长期复用,大幅降低选图门槛,适合频繁进行数据分析与汇报的用户。

Highcharts可视化图表库中文博客 642

ChatGPT、Codex并发排查:Spring Boot接口没有报错,为什么线程池队列越来越长,最后整批请求超时?

Spring Boot接口没有报错,CPU和数据库连接池也正常,为什么线程池队列却越来越长?本文从订单服务任务积压故障切入,分析无界队列、最大线程数、CallerRunsPolicy、下游阻塞和任务背压机制,并介绍通过Codex辅助定位线程池瓶颈的方法。

2601_96380027的博客 137

ChatGPT Images 2.6 正式支持 GIF 生成:一张图片也能动起来,AI 动图创作时代来了!

从最初的 AI 文本生成,到 AI 图片生成,再到 AI 视频和现在的 GIF 动图创作,AI 正在不断降低内容创作的技术门槛。以前,一个普通人想制作动画,可能需要学习复杂的软件和专业的制作流程。现在,只需要把自己的想法描述清楚,就有机会让 AI 帮你实现。未来的 AI 不仅能够帮我们生成内容,还能够直接帮我们完成更多视觉创作工作。如果你平时也喜欢折腾 AI 工具,不妨试试这个新功能。你可能会发现,原来一张普通的静态图片,也可以玩出这么多花样!

篮球界最会写bug的人;程序猿中打球最菜的人。 601

OpenAI 合并 ChatGPT 的 Chat 与 Work 标签,ChatGPT 与 Codex 共用 token 配额

OpenAI计划合并ChatGPT桌面应用中的Chat与Work标签页,简化用户界面,使从想法探索到任务执行全程在一个界面完成。新体验将支持文件、插件调用,助力生成网站、演示文稿等。Codex仍独立存在,且聊天与Codex将共享token额度,部分用户或需更频繁等待重置。该调整将先面向部分用户测试,后续推广。此举呼应Anthropic此前对Claude功能的整合。

小川搞开发的博客 178

ChatGPT双更新-GPT6.2-Sol旗舰模型与Images2.6生图-2026年11月5日

ChatGPT 双更新:GPT-6.2 Sol 旗舰推理模型发布,Images 2.6 让图片"动起来"

Spidermanbaout的博客 624

ChatGPT、Codex工程实战:Kubernetes滚动发布时,Spring Boot正在处理的请求为什么还是会被中断?

本文从Java订单系统生产故障切入,分析Readiness Probe、EndpointSlice、preStop、SIGTERM、Tomcat优雅停机和terminationGracePeriodSeconds之间的关系,并介绍通过Codex还原Pod终止时间线、排查502和Connection reset的方法。

2601_96380027的博客 473
上一篇: 20260107_152049_沃尔沃RAG实战:企业级知识库,早就该放弃小分块策略
下一篇: 别再死磕 LangChain 了!LangGraph 才是未来?1.0 版本深度解析,搞不懂区别小心被淘汰!
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值