langchain调用本地ollama的几种方式

一、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 格式要求

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容