news 2026/7/22 11:18:48

构造大模型实例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
构造大模型实例

在构造大模型实例之前,要先添加下面的导包语句,表示引入LangChain的大模型工具OllamaLLM:

from langchain_ollama import OllamaLLM
在OllamaLLM的构造方法中,model参数是必填的,要指定当前引用的大模型名称,如下:

连接本地离线大模型(Ollama)

llm = OllamaLLM(model=“qwen2:1.5b”)
除了model参数以外,OllamaLLM还提供了多个可选参数,帮助开发者定制个性化的大模型调用需求。其中常用的核心参数说明如下:
model: 模型名称,比如:“qwen:7b”、“llama3”、“deepseek-r1"等等。
base_url: 服务地址,默认的本地地址为"http://localhost:11434”。
temperature: 模型温度,即随机性。取值范围0~1,默认0.8;值越低则越严谨越确定,值越高越跳跃越创意。
num_ctx: 上下文Token的最大数量,默认2048。值越大则能记忆越长的对话内容。
num_predict: 回答内容Token的最大数量,默认128。值为-1表示不限制输出长度,值为-2表示填满上下文(跟上下文的Token数一致)。
keep_alive: 模型常驻内存的时长(频繁调用必开),默认"5m"表示5分钟。值为"-1"表示永久常驻,值为"0"表示用完即关。
validate_model_on_init: 初始化时是否校验模型存在与否,默认True表示启动程序时检查模型是否存在。

比如下面代码构造了一个定制各种参数的大模型实例:

llm = OllamaLLM(
model=“qwen2:1.5b”,
base_url=“http://localhost:11434”,
temperature=0.7,
num_ctx=4096,
num_predict=1024,
keep_alive=“-1”,
validate_model_on_init=True
)
二、构建提示词模板
在构建提示词模板之前,要先添加下面的导包语句,表示引入LangChain的提示模板工具PromptTemplate:

from langchain_core.prompts import PromptTemplate
PromptTemplate的from_template方法主要输入字符串形式的模板参数,字符串的开头为提示词内容,末尾为“{input}”表示给输入的问题文字占个位子。

比如下面代码构建了一个提示词模板:

prompt = PromptTemplate.from_template(“”"
你是专业助手,请简洁回答:
{input}
“”")
可见上面模板的提示词内容为“你是专业助手,请简洁回答:”,这便告诉大模型回答时要简明扼要,不要啰哩叭嗦。同时后面的“{input}”提前在模板中占个位置,后续将把用户输入的问题替换掉这个占位符。

三、组装 AI 执行链
为什么LangChain一定要组装执行链呢?想想看,按照程序设计的顺序控制流程,每次接口调用都经历了三个步骤:封装请求内容→执行接口调用→解析应答内容,如同下面的顺序调用代码:

无链 → 手写每一步,巨繁琐!

prompt_text = prompt.format(input=“你的问题”) # 1 手动拼模板
response = llm.invoke(prompt_text) # 2 手动调模型
result = parser.parse(response) # 3 手动解析
可见这个接口调用流程被分解成了三行代码,有点繁琐。虽然上一行代码的输出参数就是下一行代码的输入参数,但也不得不分成三个语句依次调用。

于是LangChain引入了执行链的概念,把“构建提示词、调用模型、记忆(可选)、检索(可选)、解析应答”等操作按顺序串成一条自动流水线,只要一次性启动组装好的执行链,LangChain就自动跑完全流程,无需拆成多条语句来调用。

在组装执行链之前,要先添加下面的导包语句,表示引入LangChain的执行链工具RunnableSequence,以及默认的应答内容解析器StrOutputParser:

from langchain_core.runnables import RunnableSequence
from langchain_core.output_parsers import StrOutputParser
然后编写下面代码串起“构建提示词、调用模型、解析应答”这三个操作:

chain = RunnableSequence(
prompt
| llm
| StrOutputParser()
)
为了方便起见,可省略掉构造方法的工具名称RunnableSequence,简化代码如下:

chain = (
prompt
| llm
| StrOutputParser()
)
还能进一步省略掉外围的圆括号,变成如下的一行代码:

chain = prompt | llm | StrOutputParser()
这下清爽多了,完全去掉了组装过程中的各种方法调用及其输入输出参数,只留下各环节用到的实例名称,极大地简化了代码篇幅。

四、通过执行链调用离线大模型
接下来结合构造大模型实例、构建提示词模板、组装 AI 执行链等三个步骤,通过执行链调用实现离线大模型的快速问答功能。

在编写Python代码前,要先在命令行执行下面的pip安装命令:

pip install langchain langchain-core langchain-ollama
接着在命令行窗口执行下面命令,以便启动Ollama并加载离线大模型:

ollama serve
然后编写下面的Python聊天测试代码,由用户在控制台输入问题来实现聊天交互:

from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_ollama import OllamaLLM

def main():
# 1. 连接本地Ollama离线模型,替换成你本地模型名
llm = OllamaLLM(
model=“qwen2:1.5b”,
base_url=“http://127.0.0.1:11434”,
temperature=0.7 # 随机性 0严谨~1创意
)

# 2. 构建对话模板 prompt = PromptTemplate.from_template(""" 你是专业助手,请简洁回答: {input} """) # 3. 组装执行链 chain = prompt | llm | StrOutputParser() # 4. 循环问答聊天 print("===== 离线AI聊天助手(输入exit退出)=====") while True: user_text = input("请输入问题:") if user_text.lower() in ["exit", "quit", "退出"]: print("对话结束") break print("AI思考中...") response = chain.invoke(user_text) print(f"AI回复:{response}\n")

ifname== “main”:
main()
运行上面的Python代码,根据提示输入问题内容“LangChain是什么?”,输出日志结果如下:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 11:18:04

降AI率工具支持几个平台?实测知网维普万方都能降

降AI率工具支持几个平台?实测知网维普万方都能降 你挑降 AI 率工具的时候,多半先问一句:它到底支持几个平台?这个问题特别现实。你学校用知网,隔壁同学投的期刊查维普,还有的地方走万方,一个工…

作者头像 李华
网站建设 2026/7/22 11:18:01

深入解析C28x+FPU64:嵌入式DSP浮点运算单元架构与优化实践

1. 项目概述:为什么我们需要在嵌入式DSP里塞进一个FPU? 如果你在电机控制、数字电源或者高精度工业传感领域摸爬滚打过几年,大概率会和我一样,对定点数(Fixed-Point)又爱又恨。爱的是它的速度和确定性&…

作者头像 李华
网站建设 2026/7/22 11:17:10

Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)

最近在学习 Java AI 应用开发,先用 Spring Boot 搭了一个最小项目,完成了大模型调用,然后在这个基础上继续接入 AI Service 和 Tool Calling。这篇文章记录整个实现过程,也把中间遇到的几个配置问题整理出来。本文最终实现的效果是…

作者头像 李华
网站建设 2026/7/22 11:13:45

TM4C1292NCZAD模拟比较器:从原理到实战的嵌入式电压监控方案

1. 项目概述与核心价值在嵌入式系统开发,尤其是涉及模拟信号监控、电源管理或电机控制的场景里,我们经常需要判断一个电压是否超过了某个预设的阈值。你可能会想到用一颗外部的电压比较器芯片,比如LM393,配合电阻分压网络来实现。…

作者头像 李华
网站建设 2026/7/22 11:13:22

乙方外包考PMP,真的能顺利转甲方吗?2026职场大实话

做IT外包、项目乙方的小伙伴,心里大概率都藏着同一个终极目标:早日逃离乙方,跳槽进甲方。谁不想摆脱无休止的加班、甲方随意提需求、出问题先背锅的窘境?谁不想换个节奏稳定、话语权更强、发展更稳的工作?但很多人熬了…

作者头像 李华