新闻详情

新闻详情

首页 / 资讯中心 / 详情

Langchain实战3-Model和Prompt

发布时间:2026/9/28 4:33:02来源:尧图网络
Langchain实战3-Model和Prompt
本节聚焦 LangChain 1.0 的 Model 与 Prompt模型参数如何影响输出、消息如何组织上下文、Prompt 模板如何复用以及怎样让模型返回可校验的结构化结果。1. 初始化模型importosfromlangchain.chat_modelsimportinit_chat_model modelinit_chat_model(Qwen/Qwen3-8B,model_provideropenai,base_urlos.getenv(OPENAI_BASE_URL),api_keyos.getenv(OPENAI_API_KEY),temperature0.2,max_tokens1024,timeout30,max_retries2,)常用参数参数作用建议temperature控制随机性抽取/分类设低创作适当提高max_tokens限制最大输出长度结合任务与成本设置timeout单次请求超时避免无限等待max_retries临时错误重试次数配合指数退避使用stop遇到指定文本停止适合固定格式输出参数不能替代 Prompt。低温度只能让结果更稳定不能自动让指令更清晰。2. 消息模型Chat Model 接收的是消息序列而不是一整段无角色文本。fromlangchain_core.messagesimport(SystemMessage,HumanMessage,AIMessage,)messages[SystemMessage(content你是一名专业的旅游顾问。),HumanMessage(content推荐两家适合商务出行的柏林酒店。),]responsemodel.invoke(messages)print(response.content)SystemMessage设定角色、规则和边界HumanMessage用户输入AIMessage模型回答也可能包含 Tool CallToolMessage工具执行后返回给模型的结果。3. Prompt 模板当提示词需要反复使用时不应手工拼接字符串而应使用ChatPromptTemplate。fromlangchain_core.promptsimportChatPromptTemplate promptChatPromptTemplate.from_messages([(system,你是一名{domain}专家。请使用{style}风格回答不知道时明确说明不要编造。,),(human,{question}),])messagesprompt.invoke({domain:Python,style:简洁且包含代码示例,question:解释上下文管理器,})responsemodel.invoke(messages)print(response.content)模板变量由{变量名}声明调用时必须提供所有必填变量。4. 在模板中加入历史消息fromlangchain_core.promptsimport(ChatPromptTemplate,MessagesPlaceholder,)chat_promptChatPromptTemplate.from_messages([(system,你是一名中文技术助手。),MessagesPlaceholder(variable_namehistory),(human,{question}),])history[HumanMessage(content我正在学习 LangChain。),AIMessage(content好的我会结合 LangChain 示例回答。),]messageschat_prompt.invoke({history:history,question:Agent 的状态保存在哪里,})MessagesPlaceholder会原样插入消息列表避免把多轮对话压成一段普通字符串。5. 组合 Prompt、Model 与解析器LangChain 的 Runnable 可以使用管道运算符组合fromlangchain_core.output_parsersimportStrOutputParser chainprompt|model|StrOutputParser()answerchain.invoke({domain:LangChain,style:分点说明,question:什么是 Runnable,})print(answer)这里的执行顺序是变量字典 → PromptValue → AIMessage → 字符串6. 批量、异步与流式处理inputs[{domain:AI,style:一句话,question:解释 RAG,},{domain:AI,style:一句话,question:解释 Agent,},]resultschain.batch(inputs)resultawaitchain.ainvoke(inputs[0])forchunkinchain.stream(inputs[0]):print(chunk,end,flushTrue)7. 结构化输出自由文本适合给人阅读程序消费时应使用结构化输出。frompydanticimportBaseModel,FieldclassReviewAspect(BaseModel):name:strField(description评价维度)score:floatField(ge0,le5,description0~5 分)comment:strField(description该维度的简短说明)classProductReview(BaseModel):overall_sentiment:strField(descriptionpositive、neutral 或 negative)overall_score:floatField(ge0,le5)aspects:list[ReviewAspect]structured_modelmodel.with_structured_output(ProductReview)resultstructured_model.invoke(分析以下评论 手机拍照清晰续航也不错但充电速度偏慢。 )print(result.model_dump())Pydantic 同时完成四件事描述目标字段约束数据类型校验数值范围将返回结果转为 Python 对象。8. Prompt 设计检查表角色是谁需要完成什么目标有哪些输入数据可以使用哪些知识不能做什么输出格式是什么资料不足时如何处理是否需要给出来源、步骤或置信度。9. 常见问题9.1 模板变量报错检查 Prompt 中所有{name}是否都在invoke()参数中提供。需要输出字面量大括号时应写成{{和}}。9.2 JSON 解析失败不要只在 Prompt 中说“返回 JSON”优先使用with_structured_output()并为字段增加类型和说明。9.3 结果不稳定先明确任务、边界和输出格式再降低temperature。必要时加入少量高质量示例。9.4 上下文越来越长不要无限追加历史消息。后续可以使用消息裁剪、自动摘要和 Checkpointer 控制上下文。10. 本节小结一个稳定的模型功能需要同时控制三层模型参数决定生成特性Prompt 决定任务边界结构化输出决定结果能否被程序可靠消费。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

5个实战案例揭秘:网站建设需要多少钱小江网页设计 2026/9/28 5:41:08

5个实战案例揭秘:网站建设需要多少钱小江网页设计

5个实战案例揭秘:网站建设需要多少钱小江网页设计 上周刚帮一个做机械配件的老板解决大麻烦。他之前找的公司,改个首页Banner图,拖了一周还没动静,急得他直拍桌子。这种“改个需求建站公司拖一周”的情况,在行业里太常见了。很多老板问:网站建设…

阅读更多 →
YOLOv8+Streamlit实战:球员与足球检测跟踪全流程解析 2026/9/28 5:41:02

YOLOv8+Streamlit实战:球员与足球检测跟踪全流程解析

简介:面向足球赛事分析场景的YOLOv8Streamlit计算机视觉实战资源,适合有一定Python基础、希望学习目标检测与视频跟踪的开发者。资源以YOLOv8为核心完成运动员、裁判、足球及球场关键点检测,并借助Streamlit搭建可视化操作页面,主…

阅读更多 →
WordPress提交评论卡死排查3步法与建站服务商选型指南 2026/9/28 5:41:01

WordPress提交评论卡死排查3步法与建站服务商选型指南

WordPress提交评论卡死排查3步法与建站服务商选型指南 改个需求建站公司拖一周,最后交付的网站连个评论框都点不动,这种憋屈感相信很多站长都懂。面对WordPress提交评论卡死这种典型故障,很多人第一反应是骂供应商,但真正决定你能否快…

阅读更多 →
Linux文件管理命令实战:从基础操作到安全运维的进阶指南 2026/9/28 5:41:01

Linux文件管理命令实战:从基础操作到安全运维的进阶指南

干了这么多年运维,接手过几十台服务器、给同事收拾过无数次“文件去哪了”的烂摊子之后,我越来越确定一个事儿:文件管理命令这东西,真不是“会用几条就够”的。你光会cd、ls、cp、mv、rm,日常凑合用没问题,…

阅读更多 →
基于YOLO与ByteTrack的Python人流量检测系统实战:从检测到越线计数 2026/9/28 5:41:01

基于YOLO与ByteTrack的Python人流量检测系统实战:从检测到越线计数

简介:这份资源是面向高校计算机、人工智能及相关专业学生的毕业设计完整项目包,主题为基于深度学习的人流量检测系统,适合作为毕业设计、课程设计或期末大作业直接使用。项目已通过导师指导并取得高分,下载后无需修改即可运行&…

阅读更多 →
TCP可靠传输原理与排障实战:从三次握手到粘包重传 2026/9/28 5:41:01

TCP可靠传输原理与排障实战:从三次握手到粘包重传

搞网络的人,基本都绕不开一个词:TCP。不管是写后端接口、调嵌入式模组、看Wireshark抓包,还是被面试官盘问“三次握手四次挥手”,TCP永远都在。但说实话,真正把它搞明白的人不多。很多人知道有三次握手,但说…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉