当前位置: 首页 > wzjs >正文

网站开发最快的语言给公司做兼职维护网站多少钱

网站开发最快的语言,给公司做兼职维护网站多少钱,建设工程培训,如何自助建网站一站式建网站单独为LangChain花大概五篇文章的内容,来和大家一起入门LangChain,这是第一篇重点放在,了解 LangChain 是什么、它的主要用途以及核心模块。了解 LangChain 的设计哲学:链式调用、模块化、可扩展性。安装并学习其中的一个组件&…

        单独为LangChain花大概五篇文章的内容,来和大家一起入门LangChain,这是第一篇重点放在,了解 LangChain 是什么、它的主要用途以及核心模块。了解 LangChain 的设计哲学:链式调用、模块化、可扩展性。安装并学习其中的一个组件:模型组件

〇、快速安装

LangChain框架由下面这些库组成:

库名描述
langchain-core提供基础抽象和LangChain表达式 (LCEL)。
langchain-community包含第三方集成。
合作伙伴库例如 langchain-openailangchain-anthropic 等,这些集成已经被进一步拆分为自己的轻量级库,仅依赖于 langchain-core
langchain组成应用程序认知架构的链、代理和检索策略。
LangGraph通过将步骤建模为图中的边和节点,构建强大且有状态的多参与者应用程序。与LangChain无缝集成,但也可以单独使用。
LangServe用于将LangChain链部署为REST API。
LangSmith一个开发者平台,用于调试、测试、评估和监控LLM(语言模型)应用程序。

我们可以先下载langchain、langchain-core、langchain-openai即可完成本文中的代码。如果还有用到其他的,我们再去对应按照即可。

# 创建一个conda虚拟环境
conda create -n langchain python=3.10# 激活进入
conda activate langchain# 安装最有必要的几个包
pip install langchain langchain-core langchain-openai langchain_community

一、核心组件:模型

        在 LangChain 中有三种主要类型的模型,它们分别是LLM、ChatModel和Text Embedding Model,我们一个个来学习。

(1) LLM

        大语言模型LLM(Large Language Model),用于生成文本输出。LangChain 提供了统一接口来调用各种 LLM。这个模型的用途是来回答问题、生成文本、翻译、摘要等自然语言任务。支持HuggingFace 上的各种开源模型,也支持闭源的OpenAI 的 GPT 系列和Anthropic 的 Claude系列。

需求:使用modelscope下载qwen3-0.6b模型,然后封装成LangChain的LLM类进行使用。

首先我们使用modelscope的SDK来下载一下qwen3模型,cache_dir参数指定模型存放的位置。

# 下载Qwen3-0.6B模型
from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen3-0.6B', cache_dir='./')

然后,用下面的代码进行调用

# 导入LangChain的LLM基类
from langchain.llms.base import LLM
# 导入Transformers库中的tokenizer和model类
from transformers import AutoTokenizer, AutoModelForCausalLM
# 导入PyTorch
import torch
# 导入类型提示中的ClassVar
from typing import ClassVar# 定义LocalQwen3类,继承自LLM
class LocalQwen3(LLM):# 初始化tokenizer,加载Qwen3-0.6B的tokenizertokenizer: ClassVar = AutoTokenizer.from_pretrained("Qwen/Qwen3-0.6B")# 初始化model,加载Qwen3-0.6B的模型model: ClassVar = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-0.6B")# 定义LLM类型属性@propertydef _llm_type(self):return "qwen3-0.6b"# 实现调用方法def _call(self, prompt, stop):# 将输入文本转换为模型输入格式inputs = self.tokenizer(prompt, return_tensors="pt").to(self.model.device)# 生成文本,最大新token数为100outputs = self.model.generate(**inputs, max_new_tokens=100)# 将输出解码为文本并返回return self.tokenizer.decode(outputs[0], skip_special_tokens=True)# 定义模型标识参数@propertydef _identifying_params(self):return {"name": "qwen3-0.6b"}# 主程序入口
if __name__ == "__main__":# 实例化LocalQwen3对象qwen3_local = LocalQwen3()# 调用模型进行推理response = qwen3_local.invoke("你好,Qwen3!")# 打印响应结果print(response)

(2) Chat Model

        ChatModel专门用于对话场景的模型,输入输出为消息对象(Message),支持多轮上下文理解。它的主要用途是构建聊天机器人、处理结构化对话历史。ChatModel的输入各种Message对象。更适合与用户进行多轮对话。

需求:使用modelscope下载qwen3-0.6b模型,然后封装成LangChain的ChatModel类进行使用。

用下面的代码来自定义Qwen3的ChatModel调用:

# 导入基础聊天模型类
from langchain.chat_models.base import BaseChatModel
# 导入消息类型
from langchain.schema import AIMessage, HumanMessage, SystemMessage
# 导入Transformers相关组件
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
# 导入PyTorch
import torch
# 导入类型提示
from typing import List, Any, Optional
# 导入聊天输出相关类
from langchain_core.outputs import ChatGeneration, ChatResult# 定义Qwen3聊天模型类
class ChatQwen3(BaseChatModel):# 默认模型路径model_name_or_path: str = "Qwen/Qwen3-0.6B"# tokenizer实例tokenizer: AutoTokenizer = None# 模型实例model: AutoModelForCausalLM = None# 设备类型device: str = "cuda"# 生成配置generation_config: GenerationConfig = None# 初始化方法def __init__(self, model_name_or_path: str = "Qwen/Qwen3-0.6B", device: str = "cuda", **kwargs):# 调用父类初始化super().__init__(**kwargs)# 设置模型路径self.model_name_or_path = model_name_or_path# 设置设备self.device = device# 加载tokenizerself.tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)# 加载模型self.model = AutoModelForCausalLM.from_pretrained(model_name_or_path,device_map=device,trust_remote_code=True)# 加载生成配置self.generation_config = GenerationConfig.from_pretrained(model_name_or_path)# 定义模型类型属性@propertydef _llm_type(self):return "chat_qwen3"# 生成回复的方法def _generate(self, messages: List[Any], stop: Optional[List[str]] = None, **kwargs) -> ChatResult:# 将消息转换为提示文本prompt = self._convert_messages_to_prompt(messages)# 对输入进行编码inputs = self.tokenizer(prompt, return_tensors="pt").to(self.device)# 生成回复outputs = self.model.generate(**inputs, generation_config=self.generation_config, max_new_tokens=512)# 解码回复response = self.tokenizer.decode(outputs[0], skip_special_tokens=True)# 提取Assistant的回复部分if "Assistant:" in response:response = response.split("Assistant:")[-1].strip()# 创建AI消息对象message = AIMessage(content=response)# 创建聊天生成对象generation = ChatGeneration(message=message)# 返回聊天结果return ChatResult(generations=[generation])# 将消息列表转换为提示文本的方法def _convert_messages_to_prompt(self, messages):# 初始化提示文本prompt = ""# 遍历所有消息for msg in messages:# 处理人类消息if isinstance(msg, HumanMessage):prompt += f"User: {msg.content}\n"# 处理AI消息elif isinstance(msg, AIMessage):prompt += f"Assistant: {msg.content}\n"# 处理系统消息elif isinstance(msg, SystemMessage):prompt += f"System: {msg.content}\n"# 添加Assistant前缀prompt += "Assistant:"return prompt# 主程序入口
if __name__ == "__main__":# 初始化模型chat_qwen3 = ChatQwen3(model_name_or_path="/root/autodl-tmp/Qwen/Qwen3-0.6B")# 构建消息列表messages = [SystemMessage(content="你是一个有帮助的助手。"),HumanMessage(content="请介绍下你自己。")]# 调用模型生成回复response = chat_qwen3.invoke(messages)# 打印回复内容print(response.content)

(3)Text Embedding Model

        文本嵌入模型,是将文本转化为向量表示(embedding),用于语义相似度计算、聚类、检索等任务。它主要用在构建知识库语义搜索和计算两个句子之间的相似性上。

如果你有OpenAI的API的话, 可以用下面的代码进行文本嵌入。

from langchain_openai import OpenAIEmbeddingsapi_key = "your-api-key-here"  # 请替换为你的OpenAI API密钥
base_url = "your-base-url-here"  # 请替换为你的base_urlembeddings = OpenAIEmbeddings(openai_api_key=api_key,openai_api_base=base_url
)text = "人工智能改变世界"
vector = embeddings.embed_query(text)
print(f"文本 '{text}' 的向量表示长度为:{len(vector)}")

但很多时候我们都使用开源的embedding模型来做词嵌入任务的。

需求:使用modelscope下载bert-base-chinese模型,然后封装成LangChain的Text Embedding Model类进行使用。

使用modelscope的SDK下载:

# 下载 embedding 模型
from modelscope import snapshot_download
model_dir = snapshot_download('tiansz/bert-base-chinese', cache_dir='./')

再代码里面继承Embeddings类,构建一个LangChain里面的Text Embedding Model来调用:

# 导入langchain中的Embeddings基类
from langchain.embeddings.base import Embeddings
# 导入transformers中的自动分词器和模型类
from transformers import AutoTokenizer, AutoModel
# 导入PyTorch
import torch# 定义一个使用本地BERT模型的词嵌入类,继承自Embeddings
class LocalBertEmbeddings(Embeddings):# 初始化函数,接收模型路径和设备参数def __init__(self, model_path: str, device: str = "cuda"):# 加载tokenizerself.tokenizer = AutoTokenizer.from_pretrained(model_path)# 加载模型并移至指定设备self.model = AutoModel.from_pretrained(model_path).to(device)# 保存设备信息self.device = device# 将多个文本转换为向量的函数def embed_documents(self, texts: list) -> list:# 对输入文本进行分词和编码inputs = self.tokenizer(texts, padding=True, truncation=True, max_length=512, return_tensors="pt").to(self.device)# 关闭梯度计算with torch.no_grad():# 使用模型进行前向传播outputs = self.model(**inputs)# 返回最后一层隐藏状态的平均值作为文本向量return outputs.last_hidden_state.mean(dim=1).cpu().numpy().tolist()# 将单个查询文本转换为向量的函数def embed_query(self, text: str) -> list:# 调用embed_documents并返回第一个结果return self.embed_documents([text])[0]# 主程序入口
if __name__ == "__main__":# 实例化LocalBertEmbeddings类local_bert = LocalBertEmbeddings(model_path="/root/autodl-tmp/tiansz/bert-base-chinese")# 定义测试文本text = "深度学习是人工智能的重要分支"# 获取文本的向量表示vector = local_bert.embed_query(text)# 打印向量长度print(f"文本 '{text}' 的向量长度为:{len(vector)}")print(vector)


文章转载自:

http://RPn9Tsxk.trrpb.cn
http://IZEh71GR.trrpb.cn
http://lXfXgFYy.trrpb.cn
http://K6BcynZZ.trrpb.cn
http://VH4MVeED.trrpb.cn
http://bxgeyBV8.trrpb.cn
http://amW0wc7p.trrpb.cn
http://CXwxjpbU.trrpb.cn
http://Dt6UBcp8.trrpb.cn
http://nfH1WYvv.trrpb.cn
http://JkfxGHrk.trrpb.cn
http://fSntw7eo.trrpb.cn
http://boq9Smyg.trrpb.cn
http://SHV5DqLM.trrpb.cn
http://DyRY5vp2.trrpb.cn
http://ckqQdzGu.trrpb.cn
http://VQfmwTnh.trrpb.cn
http://o5cWC5ZO.trrpb.cn
http://i13hZkIJ.trrpb.cn
http://Fsw1aMCZ.trrpb.cn
http://W1X2D1vD.trrpb.cn
http://faWJcOJV.trrpb.cn
http://dnogwIbN.trrpb.cn
http://aVu6zgtH.trrpb.cn
http://goZcuUvW.trrpb.cn
http://JMsUJ057.trrpb.cn
http://ULlJu1sF.trrpb.cn
http://dZb94Dup.trrpb.cn
http://H1Y7bY3R.trrpb.cn
http://iKRpZCZR.trrpb.cn
http://www.dtcms.com/wzjs/754603.html

相关文章:

  • 无锡专业网站建设公司200做网站
  • 微信做引流网站北京网站建设推荐华网天下
  • 创建官方网站长沙正规seo优化公司
  • 上海金桥建设监理有限公司网站番禺微网站建设
  • 网站搭建哪里找有名气门户网站首页设计
  • 谁做的四虎网站是多少支付宝网站怎么设计的
  • 衡量网站质量的标准各类网站排名
  • 网站开发如何设置视频教程潍坊网站优化公司哪家好
  • 网站风格变化两学一做网站专栏怎么设置
  • 网站托管费用多少电商网站模板引擎
  • 正规网站建设费用漫画网站建设
  • 厦门模板网站h5网站开发多少钱
  • 如何制作一个简易网站事件营销的方法
  • 域名 备案 没有网站网站代理服务器连接失败
  • 如何给网站设置关键词南京的网站建设公司哪家好
  • 阳春网站开发网站怎么做按钮
  • 域名解析 网站港口备案怎么在网站做
  • 网站建设模板软件做公关用的网站
  • 重庆企业站seo漳州微信网站开发
  • 网站建设及编辑岗位职责html5 做网站
  • 网站关键词在哪里添加天津百度推广公司电话
  • 鞍山高新区网站手机app开发网站模板
  • 做网站的市场风险分析及对策织梦的网站收录不好
  • 如何看织梦做的网站的源码昆山城市建设网站
  • 四川建设行业数据共享平台网站问题服务app开发公司
  • 网站备案好麻烦wordpress圈子
  • 做百度推广网站排名用h5做网站首页代码
  • 巴中做网站wordpress自定义鼠标
  • 首都航空公司官方网站长沙专业网站设计服务
  • 东莞网站推广费用wordpress 页面模板 不显示