一、langchian 3.0 废弃了 很多 api写法,比如(其中一部分ollama的调用):
from langchain.llms import Ollama
from langchain_community.llms import Ollama
from langchain.chat_models import ChatOllama
from langchain_community.chat_models import ChatOllama
# from langchain import LLMChain
# from langchain.chains import LLMChain
改为: from langchain_ollamaimport OllamaLLM,ChatOllama 、from langchain_core.promptsimport ChatPromptTemplate
二、ollama的几种调用
1、初始化
llm = OllamaLLM(
base_url=OLLAMA_HOST, # 服务地址
model=MODEL_NAME", # 模型名称(需本地已下载)
temperature=0.5 # 控制生成随机性(0-1)
)
2、调用方式好几种
应用场景侧重点
OllamaLLM:
适用场景:适用于需要直接获取文本信息的场景,重点在于生成高质量的文本内容,而不需要复杂的对话上下文处理。
举例:学术写作辅助、文案创作、知识科普等场景,能高效地根据输入生成所需的文本。
ChatOllama:
适用场景:强调对话交互性的场景,需要模型根据对话历史进行连贯回复,提供更人性化的交互体验。
举例:在线客服系统、聊天机器人服务、智能助手等,能够在多轮对话中准确理解用户意图并给出合适回应。
1)OllamaLLM
非流式:
llm.invoke("解释下量子计算原理")
流式返回:
for chunk in llm.stream(msg):
yield f"data: {chunk}\n\n".encode('utf-8') # SSE 格式要求
2)ChatOllama
chat_model = OllamaLLM(
base_url=OLLAMA_HOST,# 服务地址
model=MODEL_NAME,# 模型名称(需本地已下载)
temperature=0.5 # 控制生成随机性(0-1)
)
非流式:
# 第一种简单的
res = chat_model.invoke(msg)
return res.content
# 同样也支持流式返回
for chunk in chat_model.stream(msg):
yield f"data: {chunk}\n\n".encode('utf-8') # SSE 格式要求'''
# 第二种 传封装好的信息
humanMsg = HumanMessage(content="介绍下本专业的就业前景") #
systemMsg = SystemMessage(content="我是一个数学系的大学生") #角色定义
res = chat_model.invoke([humanMsg, systemMsg])
return res.content
# 流式返回
for chunkin chat_model.stream([humanMsg,systemMsg]):
yield f"data: {chunk}\n\n".encode('utf-8')# SSE 格式要求