langchain-model介绍

Abstract

Model 模块是 LangChain 与底层 LLM 之间的“抽象层”和“通用接口”。极大地降低了大语言模型集成的复杂度和切换成本,是构建复杂 LLM 应用链路的坚实基础,这篇文章简单介绍model使用过程。

依赖安装

  1. langchain
  2. langchain-ollama

创建Model

创建一个model有2种方式,1:使用通用函数init_chat_model,2:使用特定的类

  1. 方式1,通过init_chat_model初始化一个model,如果是常见的模型提供商只需要一个model=模型名称,如果不是常用模型提供商还需要设置model_provider以及base_url,和必要的api_key.常用的模型
model=init_chat_model(
	model="qwen3",
	api_key="",
	base_url=""
)
  1. 方式2,通过特定的model类,比如deepseekChatDeepSeek,微软的AzureChatOpenAI参考文档
model=ChatDeepSeek(
	model="deepseek-chat",
	api_key=""
)
  1. 参数,还可以设置如下几个参数
  • temperature
  • max_tokens
  • timeout
  • max_retries
  • 以及model其他的内部参数,使用**kwargs方式设置
  1. 每种model都需要安装对应的依赖,pip3 install langchain-模型

本地模型

通过ollama使用本地部署的模型,可以使用ChatOllama类创建一个模型,创建时需要指定模型名称

model=ChatOllama(
	model="qwen3"
)

模型的使用

  • 模型直接使用model.invoke(message)
  • 模型流式输出model.stream(message)
  • 批量询问model.batch(["","",""])
  • Tools使用,这个首先需要查询下model是否支持tools,然后model绑定工具,
# 绑定工具
model_with_tools=model.bind_tools([])
result=model_with_tools.invoke("")
for tool_call in result.tool_calls:
	# tools调用 
	print(tool_call)

工具定义,使用装饰器(@tool)注释函数,生成一个tool

@tool("search_company", description="使用公司名称查询股票代码")
def search_code(name:str)->str:
"""
	使用公司名称查询股票代码
	Args:
	name: 公司名称
	Returns:
	股票代码
"""
companys={'中芯国际':'00981'}
# 搜索公司名称
if name in companys.keys():
	stock_code=f"{name} 的股票代码为 {companys[name]}"
else:
	stock_code="没有查询到该公司的股票代码"

return stock_code

返回信息

{'name': 'search_code', 'args': {'name': '中芯国际'}, 'id': '9bc4d138-e593-43d7-900e-ea3383fa4beb', 'type': 'tool_call'}

返回的信息包含一个函数调用参数,通过这个返回信息调用工具函数.

ai_message=model_with_tools.invoke("")
for tool_call in ai_message.tool_calls:
	r=search_code.invoke(tool_call)

返回结果

content='中芯国际 的股票代码为 00981' name='search_code' tool_call_id='9bc4d138-e593-43d7-900e-ea3383fa4beb'
  • 将调用tools返回的信息,组合到已有信息中,再次调用model
for tool_call in ai_message.tool_calls:
	r=search_code.invoke(tool_call)
	if r.content:
		messages.append(r)

result=model_with_tools.invoke(messages)
  • 强制model使用tools:在绑定tools时可以使用search_code],tool_choice="search_code")参数,指定只tools使用
  • 流式响应,通过model_with_tools.stream()可以得到流式输出
  • 有些模型支持服务端的tools调用,model直接调用tools的结果放在messages中提供给model输出,不需要手动调用tools
  • 多态模型,有些模型可以输出图像+文字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值