当前位置: 首页 > news >正文

使用Microsoft Agent Framework构建C# AI代理握

简介

langchain中提供的chain链组件,能够帮助我门快速的实现各个组件的流水线式的调用,和模型的问答

Chain链的组成

根据查阅的资料,langchain的chain链结构如下:

$$Input \rightarrow Prompt \rightarrow Model \rightarrow Output$$

其中langchain框架提供了几个常用构建chain链的工具:

工具名称 作用 流程

RunnablePassthrough 传递原本的数据或添加新的字段 $$A->B$$

RunnableParallel 并发输出结果并将结果同时传递 $$A,B->C$$

RunnableLambda 自定义传递工具

乍一看很疑惑,我接下来用案例来解释各种用法。

构建较为复杂的chain链

这个案例几乎用了上面所有工具,用于演示用法

案例

案例描述:输入论文的话题,写一篇950字的高中论文。

import os

from langchain_community.chat_models.tongyi import ChatTongyi

from langchain_core.prompts import ChatPromptTemplate

from langchain_core.output_parsers import StrOutputParser

from langchain_core.runnables import RunnablePassthrough, RunnableParallel

#你的qwen模型apikey

os.environ["DASHSCOPE_API_KEY"] = "apikey"

model = ChatTongyi(model="qwen-max")

outline_prompt = ChatPromptTemplate.from_template(

"请给主题为 {topic} 的议论文写一个 总-递进-总 的简短大纲,一共分为5段。"

)

outline_chain = outline_prompt | model | StrOutputParser()

def mock_search(input_data):

return """

1. 利:Google Health AI 筛查乳腺癌准确率超人类。

2. 利:AlphaFold 预测蛋白质结构,缩短科研周期。

3. 弊:GPT-4 普及导致初级文案、原画设计岗位萎缩。

4. 弊:Deepfake 技术被用于电信诈骗和虚假视频。

"""

output_prompt = ChatPromptTemplate.from_template(

"你是一位高考作文专家。请基于大纲:\n{outline}\n并结合以下案例素材:\n{data}\n"

"就主题【{topic}】写一篇高考论文。要求:950字左右,论证严密,文采斐然。"

)

output_chain = output_prompt | model | StrOutputParser()

complex_chain = (

RunnableParallel({

"outline": outline_chain,

"data": mock_search,

"topic": RunnablePassthrough()

})

| output_chain

)

topic_input = "AI 进步的利与弊:在智能时代保持人类的温度"

print(f"正在为您撰写关于《{topic_input}》的论文...\n")

final_essay = complex_chain.invoke({"topic": topic_input})

print(final_essay)

代码解释

其他的代码我上期解释了,这里就不废话了,我着重讲chain链的构建,总体chain链的流程如下:

输入话题->获取写作的大纲 ──╮

├─? 根据大纲和示例写一篇论文

查询相关的示例 ──╯

根据输入流程图流程,我们个以分解成一个个相关的链,再将各个链串起来。

构建各部分的链

1.获取写作大纲

outline_prompt = ChatPromptTemplate.from_template(

"请给主题为 {topic} 的议论文写一个 总-递进-总 的简短大纲,一共分为5段。"

)

outline_chain = outline_prompt | model | StrOutputParser()

流程描述:构建prompt->喂给ai->将返回解析成文本

这里用的ChatPromptTemplate.from_template和上的ChatPromptTemplate.from_messages不同,区别在于前者比较简单,相当于后者直接用user字典的形式,后者from_messages有langchain框架提供的prompt模板

2.查询相关的示例

这里就直接用Gemini,mock一些模拟数据(不保证真),用于完成案例,实际情况可以自己完善搜索逻辑。

def mock_search(input_data):

return """

1. 利:Google Health AI 筛查乳腺癌准确率超人类。

2. 利:AlphaFold 预测蛋白质结构,缩短科研周期。

3. 弊:GPT-4 普及导致初级文案、原画设计岗位萎缩。

4. 弊:Deepfake 技术被用于电信诈骗和虚假视频。

"""

这个相当于RanableLamda,后面可以不用显示调用RanableLamda(mock_search)

3. 根据大纲和示例写一篇论文

output_prompt = ChatPromptTemplate.from_template(

"你是一位高考作文专家。请基于大纲:\n{outline}\n并结合以下案例素材:\n{data}\n"

"就主题【{topic}】写一篇高考论文。要求:950字左右,论证严密,文采斐然。"

)

output_chain = output_prompt | model | StrOutputParser()

流程描述:构建prompt->喂给ai->将返回解析成文本

将各个链连起来

complex_chain = (

RunnableParallel({

"outline": outline_chain,

"data": mock_search,

"topic": RunnablePassthrough()

})

| output_chain

)

这里利用RunnableParallel将获取写作的大纲和查询相关的示例两个流程并列运行后一起输出到后面,传递给output_chain继续处理。

问题

我不想利用RunnableParallel行不行? 当然可以,可以用线性来代替,先查资料,后写大纲,然后再进行文章输出,但是效率可能会比较慢。

我希望看到输出的data和outline字段怎么办? ,可以利用RunnablePassthrough().assign将生成的文本保存在新的字段中,调用时根据字典的方式定位各个文本,如下:

complex_chain = (

RunnableParallel({

"outline": outline_chain,

"data": mock_search,

"topic": RunnablePassthrough()

})

| RunnablePassthrough().assign(essay=output_chain)

)

print(response['essay'])

print(response['data'])

......丛兹得荷

http://www.jsqmd.com/news/613907/

相关文章:

  • 2025实测10款免费降AI工具:稳过检测的实用方法附真实体验
  • 2026年山东短视频代运营挑选指南:5步教你省钱避坑找对服务商 - 精选优质企业推荐榜
  • Wan2.2-I2V-A14B企业落地:汽车4S店车型介绍AI视频自动化生产
  • 2026年山东宣传片拍摄口碑好选购指南:3招教你省钱挑对团队 - 精选优质企业推荐榜
  • Hostinger主机的速度快吗 - 麦麦唛
  • Windows电脑如何直接运行安卓应用?APK Installer终极解决方案揭秘
  • 论文降重降AI高效指南:SpeedAI科研小助手使用教程
  • 深度解析:轻量级 AES-128 CFB 加密实现
  • 生成引擎优化(GEO)引发数字内容创作与用户体验的全新变革
  • 2026年口碑水性SP供应商,助力项目更出色,胶粘石/彩色路面/透水混凝土/水性sp/EPDM,水性sp企业口碑推荐 - 品牌推荐师
  • 开源能源管理实战指南:从零开始掌握OpenEMS系统应用
  • 2026雅思阅读提分指南:学生党如何选对高性价比网课? - 品牌2025
  • 2026届必备的六大AI写作网站实际效果
  • 2026年甘肃闸机系统公司甄选 主打本地服务 适配多场景工程需求 - 深度智识库
  • 抱着面试景区运营的心态去看了欢潭景区,面试不成,但景区不错,所以推荐一下,只为了报答本地人跟我说了真话
  • 如何快速解锁Cursor Pro:终极权限激活指南
  • 2026 年雅思基础薄弱用什么 app 比较好?零基础入门自学必备软件实测推荐 - 品牌2025
  • 数据摄取构建模块简介(预览版)(一)路
  • 2026年雅思真题app推荐:海量真题实时更新,碎片时间高效提分 - 品牌2025
  • 2026雅思小白入门:五大高分备考神器实测推荐 - 品牌2025
  • 2026年国内GEO优化服务商高口碑推荐:上海这五家机构值得企业关注 - 速递信息
  • 路虎发动机优选指南:高性价比再制造厂家深度解析 - 品牌推荐大师
  • 2026届最火的五大降AI率助手实测分析
  • **标题:MLOps实战进阶:用Python+Docker+Kubernetes打造自动化模型部署流水
  • 银泰百货银泰卡推荐用哪个小程序回收?推荐您用“畅回收”,不仅高效还安心,最主要是服务好! - 畅回收小程序
  • mqtt消费堆积
  • 劳力士官方售后服务中心网点实地考察报告(2026年4月最新实体店地址) - 亨得利官方服务中心
  • 2026年山东投流开户选购指南:3步教你省钱避坑精准投放 - 精选优质企业推荐榜
  • Pyplot在图表显示中文--配置文件法
  • 你的终端神器之Oh My Zsh吭