【langchain库名解析】
目录
一、from langchain_openai import ChatOpenAI
1. 核心功能
2. 典型使用场景
场景 1:直接生成对话回复
场景 3:流式输出(逐词显示结果)
3. 与其他 LangChain 组件的协同
结合提示模板(PromptTemplate)
结合记忆模块(ConversationBufferMemory)
4. 关键参数说明
5. 与直接调用 OpenAI API 的区别
二、from langchain_core.tools import tool
1. 核心用途
2. 基础用法示例
定义工具
通过 Agent 调用工具
3.典型应用场景
4. 核心参数解析
5. 与直接调用函数的区别
三、from langchain.tools.render import render_text_description
1. 核心功能
2.使用示例
3. 高级用法
自定义参数描述
4. 在Agent提示模板中的应用
5. 与其他渲染方法的对比
关键参数说明
四、from langchain_core.output_parsers.json import JsonOutputParser
1、核心功能
2、典型使用场景
3.注意事项
4.总结
五、from langchain_core.tools import tool
1.核心用途
2.示例代码
3.适用场景
一、from langchain_openai import ChatOpenAI
1. 核心功能
功能 | 说明 |
---|---|
模型调用 | 封装 OpenAI 的聊天模型 API,简化调用流程(如身份验证、参数传递) |
对话管理 | 支持多轮对话的上下文管理(需结合 Memory 模块) |
结构化输入/输出 | 处理消息的格式(如系统指令、用户输入、AI回复的区分) |
流式响应 | 支持逐步获取生成结果(streaming),提升实时交互体验 |
参数控制 | 调整生成参数(如 temperature 、max_tokens 、top_p ) |
2. 典型使用场景
场景 1:直接生成对话回复
from langchain_openai import ChatOpenAI# 初始化模型(需设置环境变量 OPENAI_API_KEY)
chat = ChatOpenAI(model="gpt-3.5-turbo")# 生成回复
response = chat.invoke("你好!")
print(response.content) # 输出:你好!有什么可以帮助你的吗?
场景 2:多轮对话(结合 SystemMessage
和 HumanMessage
)
from langchain_core.messages import SystemMessage, HumanMessage# 定义系统角色指令
messages = [SystemMessage(content="你是一个专业的技术文档翻译助手"),HumanMessage(content="请将 'API Gateway' 翻译成中文")
]# 调用模型
response = chat.invoke(messages)
print(response.content) # 输出:API 网关
场景 3:流式输出(逐词显示结果)
chat = ChatOpenAI(model="gpt-4", streaming=True)for chunk in chat.stream("请解释量子计算"):print(chunk.content, end="", flush=True)
# 输出逐词显示:量子计算是一种利用量子力学原理...
3. 与其他 LangChain 组件的协同
结合提示模板(PromptTemplate
)
from langchain_core.prompts import ChatPromptTemplate# 定义模板
template = ChatPromptTemplate.from_messages([("system", "你是一个{speaker}"),("human", "{query}")
])# 绑定模型生成链
chain = template | chat# 调用链
response = chain.invoke({"speaker": "诗人", "query": "写一首关于春天的诗"})
print(response.content)
结合记忆模块(ConversationBufferMemory
)
from langchain.memory import ConversationBufferMemorymemory = ConversationBufferMemory()
memory.save_context({"input": "你好"}, {"output": "你好!我是AI助手"})
memory.save_context({"input": "你会编程吗"}, {"output": "我会用Python写代码"})# 从记忆加载历史对话
messages = memory.load_memory_variables({})["history"]
response = chat.invoke(messages + [HumanMessage(content="你擅长什么语言?")])
print(response.content) # 输出:我擅长使用Python编程。
4. 关键参数说明
参数 | 类型 | 默认值 | 作用 |
---|---|---|---|
model | str | "gpt-3.5-turbo" | 指定模型版本(如 "gpt-4") |
temperature | float | 0.7 | 控制生成随机性(0-2,值越大越随机) |
max_tokens | int | None | 限制生成的最大 token 数量 |
streaming | bool | False | 是否启用流式输出 |
openai_api_key | str | None | 手动指定 API 密钥(优先从环境变量读取) |
5. 与直接调用 OpenAI API 的区别
对比项 | LangChain 的 ChatOpenAI | 直接调用 OpenAI API |
---|---|---|
代码复杂度 | 高度封装,简化调用逻辑 | 需要手动处理 HTTP 请求和响应解析 |
扩展性 | 可无缝接入 LangChain 的链、代理、记忆等模块 | 需自行实现上下文管理、工具集成等功能 |
适用场景 | 快速构建复杂应用(如带记忆的对话机器人) | 简单的一次性请求或原型验证 |
快速接入 OpenAI 模型:无需处理底层 API 细节
构建模块化应用:轻松结合提示工程、记忆管理、外部工具
实现复杂交互逻辑:如多轮对话、流式响应、参数动态调整
二、from langchain_core.tools import tool
主要作用是通过 装饰器 将普通 Python 函数快速转化为 LangChain 框架可识别的 工具(Tool),使 AI 代理(Agent)能够动态调用这些函数。
1. 核心用途
用途 | 说明 |
---|---|
扩展代理能力 | 将自定义函数(如搜索、计算、数据库操作)封装为工具,供代理调用 |
标准化接口 | 统一工具的描述、参数格式,便于代理理解和使用 |
集成到工作流 | 工具可被嵌入到 Agent 的决策链中,实现自动化任务分解和执行 |
2. 基础用法示例
定义工具
from langchain_core.tools import tool@tool
def search_weather(city: str) -> str:"""根据城市名称查询实时天气(示例函数,实际需调用API)"""# 假设这里调用真实天气API(如OpenWeatherMap)return f"{city}:晴,25℃"# 工具会自动生成名称和描述,供Agent理解其功能
print(search_weather.name) # 输出:search_weather
print(search_weather.description)
# 输出:search_weather(city: str) -> str - 根据城市名称查询实时天气(示例函数,实际需调用API)
通过 Agent 调用工具
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_openai import ChatOpenAI# 定义工具列表
tools = [search_weather]# 初始化模型和Agent
model = ChatOpenAI(model="gpt-3.5-turbo")
agent = create_tool_calling_agent(model, tools)
agent_executor = AgentExecutor(agent=agent, tools=tools)# 执行任务
result = agent_executor.invoke({"input": "上海现在的天气怎么样?"
})
print(result["output"]) # 输出:上海:晴,25℃
3.典型应用场景
场景 | 工具示例 | 说明 |
---|---|---|
数据查询 | 天气/股票/航班查询工具 | 将 API 调用封装为 Agent 可操作的工具 |
业务系统集成 | 订单查询、CRM数据更新 | 连接企业内部系统 |
数学计算 | 计算器、单位转换工具 | 解决数值处理需求 |
内容生成辅助 | 图片生成、文本摘要 | 扩展生成式 AI 的功能边界 |
4. 核心参数解析
参数 | 类型 | 作用 |
---|---|---|
name | str | 自定义工具名称(默认使用函数名) |
description | str | 工具的功能描述(Agent 根据此决定是否调用) |
args_schema | Pydantic Model | 定义参数结构和校验规则 |
return_direct | bool | 是否绕过 Agent 直接返回结果(适用于无需后续处理的工具) |
5. 与直接调用函数的区别
对比项 | 使用 @tool 封装的工具 | 直接调用普通函数 |
---|---|---|
调用方式 | 通过 Agent 自动决策调用 | 需显式编写调用代码 |
上下文感知 | 可结合对话历史、用户意图动态触发 | 静态逻辑,无法自适应 |
错误处理 | 支持 Agent 自动重试或选择替代工具 | 需手动实现异常处理 |
可扩展性 | 轻松添加/移除工具,无需修改核心逻辑 | 需重构代码以适应新功能 |
-
快速扩展 Agent 能力:将任意功能转化为 AI 可调用的工具
-
构建自动化工作流:Agent 根据问题自动选择并组合工具
-
降低系统耦合度:工具独立开发,通过标准化接口集成
适合需要 动态任务分解 的场景(如客服系统自动选择查订单、查物流等工具)。
三、from langchain.tools.render import render_text_description
核心作用是将 工具列表(Tools) 转换为 自然语言描述文本,主要用于 生成Agent的系统提示词,帮助大语言模型理解可用工具的功能和调用方式。
1. 核心功能
功能 | 说明 |
---|---|
工具描述格式化 | 将工具的 name 、description 、args 等元数据转换为易读的文本格式 |
提示工程优化 | 生成标准化的工具说明文本,嵌入到Agent的提示模板中,提升工具调用准确性 |
调试与日志 | 以友好格式输出工具信息,便于开发者检查工具注册情况 |
2.使用示例
from langchain_core.tools import tool
from langchain.tools.render import render_text_description#一、定义工具
@tool
def add(a:int,b:int)->int:"""计算加法"""return a+b@tool
def mul(a:int,b:int)->int:"""计算乘法"""return a*b@tool
def dele(a:int,b:int)->int:"""计算减法"""return a-b@tool
def get_weather(location:str,unit:str)->str:"""获取指定地区天气参数:location:地区名称unit:温度单位返回:str:描述当前天气和温度"""return f"{location}的天气20{unit}"#二、注册和管理工具
tools=[add,mul,dele,get_weather]#三、构建工具条件和调用描述
render_tools=render_text_description([add,mul,dele,get_weather])
print(render_tools)
运行结果:
add(a: int, b: int) -> int - 计算加法
mul(a: int, b: int) -> int - 计算乘法
dele(a: int, b: int) -> int - 计算减法
get_weather(location: str, unit: str) -> str - 获取指定地
区天气参数:
location:地区名称
unit:温度单位返回:
str:描述当前天气和温度
3. 高级用法
自定义参数描述
通过 Pydantic 模型增强参数说明:
from pydantic import BaseModel, Fieldclass WeatherArgs(BaseModel):location: str = Field(description="城市名称,如'上海'")unit: str = Field(description="温度单位,可选值:'摄氏度'或'华氏度'")@tool(args_schema=WeatherArgs)
def get_current_weather(location: str, unit: str) -> str:# 实现代码...# 渲染后参数描述会更清晰
tool_descriptions = render_text_description([get_current_weather])
print(tool_descriptions)
运行示例
get_current_weather: 获取指定位置和单位的当前天气
参数:- location (str): 城市名称,如'上海'- unit (str): 温度单位,可选值:'摄氏度'或'华氏度'
4. 在Agent提示模板中的应用
结合 SystemMessagePromptTemplate
构建完整提示:
from langchain_core.prompts import ChatPromptTemplate, SystemMessagePromptTemplate# 生成工具描述文本
tool_descriptions = render_text_description(tools)# 构建系统提示模板
system_prompt = SystemMessagePromptTemplate.from_template("你是一个智能助手,可以调用以下工具:\n\n{tools}\n\n""每次调用工具时,请严格按照参数要求提供数据。"
)# 最终提示组合
prompt = ChatPromptTemplate.from_messages([system_prompt,("user", "{input}"),
])
5. 与其他渲染方法的对比
方法 | 输出格式 | 典型应用场景 |
---|---|---|
render_text_description() | 纯文本 | Agent提示词、命令行日志 |
render_text_description_as_markdown() | Markdown | 文档生成、UI展示 |
render_tool_schemas() | JSON Schema | 结构化数据交换、前端集成 |
关键参数说明
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
tools | List[Tool] | 必填 | 需要渲染的工具列表 |
args_only | bool | False | 是否只渲染参数部分(True时隐藏工具描述,仅显示参数) |
tool_names | List[str] | None | 指定渲染特定名称的工具(None时渲染全部) |
使用 render_text_description
可实现:
-
工具能力可视化:将代码中的工具定义转化为自然语言
-
提示词标准化:确保Agent准确理解工具用途和调用方式
-
开发效率提升:快速检查工具注册状态,减少调试成本
这是构建可靠 Agent 工作流的关键步骤,尤其在需要动态管理大量工具的场景中(如插件系统)。
四、from langchain_core.output_parsers.json import JsonOutputParser
在 LangChain 中的作用是 将语言模型(LLM)输出的 JSON 格式文本解析为结构化数据(如 Python 字典或对象),以便后续程序处理。
1、核心功能
-
JSON 解析
将模型返回的 JSON 字符串(如'{"name": "Alice", "age": 30}'
)转换为 Python 字典或其他数据结构,避免手动处理字符串解析。 -
结构化输出
确保链(Chain)的最终输出是结构化数据,而非非结构化文本,便于与其他工具或 API 集成。 -
验证与兼容性
可结合 Pydantic 模型(需其他组件配合)验证 JSON 结构,确保字段和类型符合预期,若不符合会抛出错误。
2、典型使用场景
-
链式调用末尾:作为链的最后一步,解析模型的 JSON 响应。
from langchain_core.output_parsers.json import JsonOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI# 1. 创建解析器
parser = JsonOutputParser()# 2. 提示词要求模型返回 JSON
prompt = PromptTemplate(template="回答为 JSON,包含 'name' 和 'age': {question}",input_variables=["question"],
)# 3. 构建链:模型 → 解析器
chain = prompt | ChatOpenAI() | parser# 4. 调用链,获取结构化结果
result = chain.invoke({"question": "Alice 的年龄是多少?"})
# 输出: {"name": "Alice", "age": 30}
-
容错处理:若模型返回非标准 JSON(如额外文本),需额外步骤(如正则提取)预处理,再使用解析器。
3.注意事项
-
依赖模型协作:需在提示词中明确要求模型生成 JSON,否则可能解析失败。
-
错误处理:建议用
try-except
捕捉解析异常,处理格式错误。 -
高级验证:结合
PydanticOutputParser
可实现更严格的字段和类型校验。
4.总结
JsonOutputParser
简化了从语言模型获取结构化数据的过程,是构建可靠 LangChain 应用的关键组件,尤其适用于需要机器可读输出(如 API 调用、数据流水线)的场景。
五、from langchain_core.tools import tool
作用是导入一个装饰器 @tool
,它允许你将普通的 Python 函数快速转换为 LangChain 可调用的工具(Tool)。这些工具可以被 LangChain 的代理(Agent)、链(Chain)等组件直接调用,以完成特定任务(如调用 API、计算、查询等)。
1.核心用途
-
简化工具定义:通过
@tool
装饰器,无需手动编写复杂的工具类,只需装饰一个函数,即可将其集成到 LangChain 的工作流中。 -
赋予自然语言描述:工具的函数名和文档字符串会被自动解析,让语言模型(如 ChatGPT)理解工具的功能和调用方式。
2.示例代码
from langchain_core.tools import tool
'''
库名解析:langchain_core.tools
专门用于定义和管理 AI 工具(Tools),其核心作用是
让开发者能够轻松创建、描述和集成可被大型语言模型
(LLM)调用的功能模块1. 工具标准化定义
通过 @tool 装饰器,将普通 Python 函数转化为 LangChain 工具自动生成工具元数据,包括:名称(函数名)描述(函数文档字符串首段)参数结构(类型注解 + 参数描述)执行逻辑(函数本体)
'''# AI 可读的接口
@tool
def multiply(first_int: int, second_int: int) -> int:"""对两个整数进行乘法运算"""return first_int * second_int@tool
def add(first_int: int, second_int: int) -> int:"""对两个整数进行加法运算"""return first_int + second_int@tool
def get_current_weather(location: str, unit: str) -> str:"""获取指定位置和单位的当前天气参数:location (str): 位置的名称unit (str): 温度单位(例如:摄氏度、华氏度)返回:str: 描述当前天气和温度的字符串"""return f"It's 20 {unit} in {location}"#工具注册与管理
tools = [multiply, add, get_current_weather]print("\n名称1: ", multiply.name)
print("描述1: ", multiply.description)
print("参数1: ", multiply.args)print("\n名称2: ", add.name)
print("描述2: ", add.description)
print("参数2: ", add.args)print("\n名称3: ", get_current_weather.name)
print("描述3: ", get_current_weather.description)
print("参数3: ", get_current_weather.args)'''
完整属性结构:
基础元数据:name、description
参数配置:args(简化参数列表)、args_schema(详细结构)
执行控制:return_direct
模式描述:schema(兼容 OpenAI 函数调用格式)
运行时方法:run()、arun()
'''
运行结果
名称1: multiply
描述1: 对两个整数进行乘法运算
参数1: {'first_int': {'title': 'First Int', 'type': 'integer'}, 'second_int': {'title': 'Second Int', 'type': 'integer'}}名称2: add
描述2: 对两个整数进行加法运算
参数2: {'first_int': {'title': 'First Int', 'type': 'integer'}, 'second_int': {'title': 'Second Int', 'type': 'integer'}}名称3: get_current_weather
描述3: 获取指定位置和单位的当前天气参数:
location (str): 位置的名称
unit (str): 温度单位(例如:摄氏度、华氏度)返回:
str: 描述当前天气和温度的字符串
参数3: {'location': {'title': 'Location', 'type': 'string'}, 'unit': {'title': 'Unit', 'type': 'string'}}
3.适用场景
-
快速将现有函数(如数据库查询、API 调用)接入 LangChain 代理。
-
构建自定义工具扩展代理的能力(例如:股票查询、邮件发送等)。
如果需要更复杂的工具(如异步调用、自定义错误处理),可以继承 BaseTool
类手动实现,但 @tool
装饰器在简单场景下更高效。
相关文章:
【langchain库名解析】
目录 一、from langchain_openai import ChatOpenAI 1. 核心功能 2. 典型使用场景 场景 1:直接生成对话回复 场景 3:流式输出(逐词显示结果) 3. 与其他 LangChain 组件的协同 结合提示模板(PromptTemplate&#…...
629SJBH图书管理系统设计与实现
一、 绪论 (一)课题的提出、现状及研究意义 图书馆是文献情报中心,是为教学和科研服务的学术性机构。它履行搜集、加工、存贮和传播知识信息的职能,与各系资料室互为补充,共同承担为教学和科研提供文献情报资料保障的…...
2025 年“认证杯”数学中国数学建模网络挑战赛 A题 小行星轨迹预测
近地小行星( Near Earth Asteroids, NEAs )是轨道相对接近地球的小行 星,它的正式定义为椭圆轨道的近日距不大于 1.3 天文单位( AU )的小行星。 其中轨道与地球轨道最近距离小于 0.05A 且直径大于 140 米的小行星被…...
PhotoShop学习09
1.弯曲钢笔工具 PhotoShop提供了弯曲钢笔工具可以直观地创建路径,只需要对分段推拉就能够进行修改。弯曲港币工具位于工具面板中的钢笔工具里,它的快捷键为P。 在使用前,可以把填充和描边选为空颜色,并打开路径选项,勾…...
远程管理命令:关机和重启
关机/重启 序号命令对应英文作用01shutdown 选项 时间shutdown关机 / 重新启动 一、shutdown shutdown 命令可以安全关闭 或者 重新启动系统。 选项含义-r重新启动 提示: 不指定选项和参数,默认表示 1 分钟之后 关闭电脑远程维护服务器时࿰…...
用Perl和HTTP::Tiny库的爬虫
HTTP::Tiny是Perl的一个轻量级HTTP客户端,适合简单的请求,但不像LWP那样功能全面,不过对于基本需求应该足够了。 首先,我需要熟悉HTTP::Tiny的基本用法。比如如何发起GET请求,设置user-agent,处理响应。用…...
MPP 架构解析:原理、核心优势与对比指南
一、引言:大数据时代的数据处理挑战 全球数据量正以指数级增长。据 Statista 统计,2010 年全球数据量仅 2ZB,2025 年预计达 175ZB。企业面临的核心挑战已从“如何存储数据”转向“如何快速分析数据”。传统架构在处理海量数据时暴露明显瓶颈…...
2025.04.10-拼多多春招笔试第三题
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 数字重排最大化问题 问题描述 LYA是一位专业的数字设计师。她手中有两个数字序列 s 1 s_1...
前端-vue2核心
官网网址Vue2 安装 — Vue.js 搭建环境 第一种方式(刚开是接触Vue) 我们看官网,可以直接在script引入vue版本。这里有两个版本,开发版和生产版本。我们两个都下载。 然后创建一个项目,将下载的生产版本和开发版本粘…...
基于springboot的“协同过滤算法的高考择校推荐系统”的设计与实现(源码+数据库+文档+PPT)
基于springboot的“协同过滤算法的高考择校推荐系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:springboot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 局部E-R图 系统…...
制作前的关键筹备:考试考核系统之核心要点
明确系统使用目的 制作考试考核系统前,企业需明确系统使用目的,这是开发基石,不同目的决定系统功能特性。用于员工培训考核时,系统要与培训内容结合,能生成相应考题,检验员工知识掌握程度,具备…...
【动手学深度学习】现代卷积神经网络:ALexNet
【动手学深度学习】现代卷积神经网络:ALexNet 1,ALexNet简介2,AlexNet和LeNet的对比3, AlexNet模型详细设计4,AlexNet采用ReLU激活函数4.1,ReLU激活函数4.2,sigmoid激活函数4.3,为什…...
Linux自启动脚本 systemctl
1.编写好脚本 #!/bin/bash /home/china/Linux/code/a.out2. 创建 Systemd 服务文件 sudo gedit /etc/systemd/system/my_script.service3.编写服务配置 将以下内容写入文件(根据需求修改字段): [Unit] DescriptionMy Custom Shell Script…...
2024年KBS SCI1区TOP:信息增益比子特征分组赋能粒子群算法ISPSO,深度解析+性能实测
目录 1.摘要2.信息度量3.改进策略4.结果展示5.参考文献6.代码获取 1.摘要 特征选择是机器学习中的关键预处理步骤,广泛应用于实际问题。尽管粒子群算法(PSO)因其强大的全局搜索能力被广泛用于特征选择,但要开发一种高效的PSO方法…...
餐饮厨房开源监控安全系统的智能革命
面对日益严格的合规要求和消费者对卫生的信任危机,传统人工监督已力不从心:卫生死角难发现、违规操作难追溯、安全隐患防不胜防。如何让后厨更透明、更安全、更可信?餐饮厨房视频安全系统横空出世!这套系统融合实时监控与AI技术&a…...
Ansys Electronics 变压器 ACT
你好, 在本博客中,我将讨论如何使用 Ansys 电子变压器 ACT 自动快速地设计电力电子电感器或变压器。我将逐步介绍设计和创建电力电子变压器示例的步骤,该变压器为同心组件,双绕组,采用正弦电压激励,并应用…...
Redis与Lua原子操作深度解析及案例分析
一、Redis原子操作概述 Redis作为高性能的键值存储系统,其原子性操作是保证数据一致性的核心机制。在Redis中,原子性指的是一个操作要么完全执行,要么完全不执行,不会出现部分执行的情况。 Redis原子性的实现原理 单线程模型&a…...
Shell 脚本开发从入门到实战
第1章:什么是 Shell 与 Shell 脚本? 一、Shell 是什么? Shell 是一个命令解释器,是你在 Linux 里敲命令的地方。你平时用的命令如 cd、ls、echo,其实都由 Shell 来解析执行。最常见的 Shell 是 Bash,绝大…...
宇视设备视频平台EasyCVR打造智慧酒店安防体系,筑牢安全防线
一、需求背景 酒店作为人员流动频繁的场所,对安全保障与隐私保护有着极高的要求。为切实维护酒店内部公共区域的安全秩序,24小时不间断视频监控成为必要举措。通常情况下,酒店需在本地部署视频监控系统以供查看,部分连锁酒店还希…...
深度解读分销小程序商城源码系统:从搭建到运营的关键指南
在移动互联网浪潮的席卷下,电商领域持续变革与创新。分销小程序商城凭借其独特优势,如依托社交平台流量、便捷的购物体验、高效的分销推广模式等,成为众多企业和创业者开展线上业务的热门选择。深入了解分销小程序商城源码系统,从…...
BeeWorks:打造安全可控的企业内网即时通讯平台
在数字化办公时代,企业对即时通讯工具的需求日益增长,尤其是对数据安全和隐私保护有严格要求的行业,如金融、政府、医疗等。BeeWorks 作为一款专注于内网部署的即时通讯软件,凭借其卓越的安全性、稳定性、丰富的功能以及全面的信创…...
微信小程序开发:废品回收小程序-功能清单
用户端:便捷体验,触手可及 废品百科与估价指南:平台以直观的方式展示各类废品的分类标准与实时市场价格,让用户轻松掌握废品价值,决策更从容。 一键预约,轻松回收:用户只需轻触屏幕,…...
【Grok 大模型深度解析】第一期:技术溯源与核心突破
一、Grok的技术基因:从Transformer到混合架构的演进 1.1 Transformer架构的局限性 2017年Google提出的Transformer架构彻底改变了自然语言处理领域,其自注意力机制(Self-Attention)在长序列建模上表现优异。然而,随着模型规模的增大,传统Transformer暴露出以下问题: 计…...
性能比拼: Redis vs Memcached
本内容是对知名性能评测博主 Anton Putra Redis vs Memcached Performance Benchmark 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 在本视频中,我们将对比 Redis 和 Memcached。我会介绍一些功能上的不同,但主要关注 性能。 首先…...
Mujoco xml actuator
actuator general(通用执行器)motor(电机执行器)position(位置伺服)velocity(速度伺服)intvelocity(积分速度伺服)damper(主动阻尼器)…...
Mybatis Plus分页查询返回total为0问题
概述 最近开发公司新项目,使用 Mybatis Plus 分页,发现总数和总页数为0,在此记录问题和解决方案。 添加 MybatisPlusConfig /*** author: lanys* version: 1.0* 创建时间:2025年4月9日 14:24:40* Description: MybatisPlus分页…...
多卡分布式训练:torchrun --nproc_per_node=5
多卡分布式训练:torchrun --nproc_per_node=5 1. torchrun 实现规则 torchrun 是 PyTorch 提供的用于启动分布式训练作业的实用工具,它基于 torch.distributed 包,核心目标是简化多进程分布式训练的启动和管理。以下是其主要实现规则: 进程启动 多进程创建:torchrun 会…...
网络层-IP地址计算
例1:IP地址二进制与十进制互转 题目: 将二进制IP 11000000.10101000.00000001.00001010 转换为点分十进制。将IP地址 172.16.254.1 转换为二进制格式。 答案与解析: 转换步骤: 每个8位二进制转为十进制: 11000000 →…...
BeagleBone Black笔记
目录 参考资料开机led控制GPIO输入输出插网线联网安装gcc编译工具镜像备份验证备份完整性将内存卡插入目标BBBboot启动开关 参考资料 链接: BeagleBone Black使用(一):狗板简介 链接: 使用Beaglebone Black的IO口 开机 直接用usb连接到电脑…...
【25软考网工笔记】第一章 计算机网络概述
目录 一、计算机网络发展与分类 1. 计算机网络形成和发展 1)ICT 2)计算机网络的发展 3)我国互联网发展 2. 计算机网络分类 1)通信子网和资源子网 2)PAN、LAN、MAN、WAN 3)其他分类方式 3. 计算机…...
Soybean Admin 配置vite兼容低版本浏览器、安卓电视浏览器(飞视浏览器)
环境 window10 pnpm 8.15.4 node 8.15.4 vite 5.1.4 soybean admin: 1.0.0 native-ui: 2.38.0 小米电视 MIUI TV版本:MiTV OS 2.7.1886(稳定版) 飞视浏览器:https://www.fenxm.com/1220.html在小米电视安装飞视浏览器可以去小红书查安装教程:…...
MicroPython 开发ESP32应用教程 之 I2S、INMP441音频录制、MAX98357A音频播放、SD卡读写
本课程我们讲解Micropython for ESP32 的i2s及其应用,比如INMP441音频录制、MAX98357A音频播放等,还有SD卡的读写。 一、硬件准备 1、支持micropython的ESP32S3开发板 2、INMP441数字全向麦克风模块 3、MAX98357A音频播放模块 4、SD卡模块 5、面包板及…...
从零到一:基于DeepSeek-R1的智能贪吃蛇开发实战
《基于DeepSeek-R1的AI驱动高性能贪吃蛇游戏开发全流程解析》 一、技术选型与环境搭建 开发工具链 • 编辑器:VSCode/Sublime(支持代码生成插件) • 运行环境:Node.js v16+(用于API调用及后端服务) • 图形库:HTML5 Canvas(网页端)或OLED驱动(单片机场景) • AI引擎…...
数据结构与算法-动态规划-区间dp,状态机dp,树形dp
3-区间 DP 介绍 通常用 (dp[i][j]) 表示区间 ([i, j]) 上的某种最优值,比如 (dp[i][j]) 可以表示从下标 (i) 到 (j) 的元素进行某种操作所得到的最大收益、最小花费等。 状态转移方程:这是区间 DP 的关键。它描述了如何从较小的区间的最优解得到较大区…...
文件内容课堂总结
Spark-Core编程 Key-Value类型: partitionBy函数根据指定Partitioner重新进行分区,默认使用HashPartitioner groupByKey函数根据key对value进行分组,有三种函数签名 reduceByKey函数将数据按相同Key对Value进行聚合,与groupByKey相…...
【树莓派Pico FreeRTOS】-任务通知
任务通知 文章目录 任务通知1、硬件准备2、软件准备3、FreeRTOS的任务通知介绍4、任务通知数据传输实例RP2040 由 Raspberry Pi 设计,具有双核 Arm Cortex-M0+ 处理器和 264KB 内部 RAM,并支持高达 16MB 的片外闪存。 广泛的灵活 I/O 选项包括 I2C、SPI 和独特的可编程 I/O (…...
c++11新内容补充
1.列表初始化 1.1传统{ }初始化 c98的{ }初始化主要是用于数组,以及结构体 1.2c11{ }初始化 1.让内置类型和自定义类型都可以用{ }实现多个数据初始化,而自定义类型的实现原理是类型转换(没优化的版本是先构造临时对象,然后拷贝构…...
动态规划基础
动态规划 动态规划概论楼梯最短路最长上升子序列(LIS)最长公共子序列(LCS)最长回文子串 概率动态规划区间动态规划石子合并括号序列石子合并(环形) 树形动态规划统计人数没有上司的舞会 背包01背包完全背包多重背包分组背包 动态规…...
导入 Excel 批量替换文件名称及扩展名
重命名的需求是多种多样的,我们一个方法或一个工具很难说完全满足 100% 的文件重命名的需求。如果我们的文件重命名的需求非常的复杂的时候,我们能否有一个万全的方法来帮我们实现呢?那今天就给大家介绍一下导入 excel 的方式批量修改文件名称…...
降低AIGC检测率的AI润色提示词模板
以下是针对降低AIGC检测率的 AI润色提示词模板,涵盖语言风格优化、逻辑重构、学术规范强化等维度,结合反检测策略设计,可直接用于DeepSeek等工具: 一、标题与摘要优化 1. 标题去AI化 提示词: 请将以下标题改写成更学…...
系统思考—提升解决动态性复杂问题能力
感谢合作伙伴的信任推荐! 客户今年的人才发展重点之一,是提升管理者应对动态性、复杂性问题的能力。 在深入交流后,系统思考作为关键能力模块,最终被纳入轮训项目——这不仅是一次培训合作,更是一场共同认知的跃迁&am…...
spring--整合Mybatis详解
整合Mybatis 步骤: 1.导入相关Maven依赖 junit mybatis mysql数据库连接 spring相关的 aop织入 mybatis-spring 2.编写配置文件 3.测试 回忆mybatis 还需连接数据库 导入依赖: <dependencies><dependency><groupId>juni…...
深入理解 HTML5 Audio:网页音频播放的新时代
在网页开发领域,音频的嵌入和播放一直是一个重要且不断演进的话题。HTML5 的出现,为网页音频播放带来了标准化的解决方案,极大地改善了开发者和用户的体验。 一、HTML5 之前的音频播放状况 在 HTML5 诞生之前,互联网上缺乏统一的网页音频播放标准。当时,大多数音频播放依…...
Cloudflare 缓存工作原理
Cloudflare 缓存是 Cloudflare 内容分发网络(CDN)的一个关键组成部分,通过在靠近用户的全球网络边缘服务器上存储和交付内容,显著提升网站性能。以下是关于 Cloudflare 缓存的相关内容: 工作原理 内容请求:…...
【Unity3D中UI与物体可见性的判断方法】
系列文章目录 unity知识点 文章目录 系列文章目录👉前言👉一、判断UI的可见性1-1、第一种1-2、通过RectTransform计算可视区域1-3、滚动容器内可见性检测(Scroll View) 👉二、判断物体的可见性2-1、视锥体检测方法2-2…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(1):承上启下,继续上路
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(1):承上启下,继续上路 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)普通形(ふつうけい)と思います(2)辞書形ことができます(3)Vたことがあります。(4)Vた とき & Vる とき3、单词(1)日语单词(2…...
ubuntu24.04 cmake 报错 libldap-2.5.so.0 解决办法
apt cmake有毛病 换源重新安装 wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add - sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" sudo apt update sudo apt in…...
Mac 关闭浏览器左右滑动切换页面的问题
在使用触控板,操作浏览器时,左右滑动时,浏览器容易触发前进或者后退去查看历史记录。 如何关闭呢? 打开Mac- 系统设置-触控板 -更多手势 将轻扫切换页面设置为关,就可以了...
在 openEuler 24.03 (LTS) 操作系统上添加 ollama 作为系统服务的步骤
以下是在 openEuler 操作系统上添加 ollama 作为系统服务的步骤: 创建 systemd 服务文件 sudo vi /etc/systemd/system/ollama.service将以下内容写入服务文件(按需修改参数): [Unit] DescriptionOllama Service Afternetwork.…...
华为昇腾服务器上查看固件、驱动和CANN版本的常用方法
Hey小伙伴们~👋 今天来聊聊怎么在华为昇腾服务器上查看固件、驱动和CANN版本吧!💻 这些信息对于确保你的服务器运行顺畅可是超级重要的哦!下面就来给大家介绍几种常用的查看方法!👇 🌟 1. 查…...