Langchain--如何使用AI大模型 2.0

Java对接AI大模型(一)【Langchain4j】 随着AI大模型技术的升起,人们越来越感觉到生活上的便捷以及人机对话照进现实.什么是大模型呢?大模型(Large Model),通常是指参数量非常庞大的深度学习模型,特别是在自然语言处理(NLP)、计算机视觉(CV)等领域中,模型参数数量达到数十亿甚至数千亿的规模。为了弥补Java在AI领域的工具短板,现在市面上出现了几款针对Java的AI开发工具. 阅读详情

我们除了可以使用Langchain进行模型对话、提示词创作、嵌入模型,还可以使用其他的组件对大模型封装使用,打造我们自己的大模型。

Agents

首先,我们来谈谈Agents。在Langchain,Agents是执行特定任务或功能的智能实体。它们可以被看作是自动化的小助手,能够根据预设的规则和逻辑,在Langchain生态系统中自主地执行操作。比如,有的Agent负责监控区块链上的交易活动,有的则负责处理语言任务,如文本生成、翻译或情感分析等。这些Agent的存在,极大地提高了Langchain系统的自动化程度和效率。

AI大模型虽然很强大,但是还有一些局限性,比如:

  • 数据不及时:ChatGPT数据更新到2022年底,也就是说今年的新闻它是不知道的。
  • 处理复杂任务:大模型虽然在问答方面很出色,但是不能直接处理复杂任务。
  • 大模型的核心能力是理解意图和文本生成。

我们在使用Langchain的时候,可以通过pycharm的某个函数,Ctrl + b 查看提供的参数,也可以去Langchain官网查看提供的各种API,如我们之前使用的baiduqianfan:

可以看到LLMs是我们的LLMs模块,BaiduQianfan是其中的库。

其中:ERNIE-Bot-turbo是默认的模型(文心一言 ),也可以使用其他的模型,比如:Qianfan-Chinese-Llama-2-7B,是通过Llama微调的中文大模型。

我们先假设,想要查询山东省2023年高考人数有多少,我们可以使用多个代理工具,让Agents选择执行。

代码语言:javascript

pip install duckduckgo-search
  • 集成DuckDuckGo搜索引擎的功能,可以去浏览器搜索并集成信息。

代码语言:javascript

import os
from langchain_community.chat_models import QianfanChatEndpoint
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType

os.environ['QIANFAN_AK'] = "******"
os.environ['QIANFAN_SK'] = "******"

llm = QianfanChatEndpoint(model='Chinese-Llama-2-7B')

tools = load_tools(["ddg-search", "llm-math"], llm=llm)

agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
# verbose=True参数是在执行任务时打印更多的调试信息。
print('agent', agent)

from langchain import PromptTemplate
prompt_template = "山东省2023年高考人数是多少"
prompt = PromptTemplate.from_template(prompt_template)
# 创建了一个提示模板,并将其转换为PromptTemplate对象。
print('prompt-->', prompt)


agent.run(prompt)

输出:

代码语言:javascript

agent verbose=True tags=['zero-shot-react-description'] agent=ZeroShotAgent(llm_chain=LLMChain(prompt=PromptTemplate(input_variables=['agent_scratchpad', 'input'], template='Answer the following questions as best you can. You have access to the following tools:\n\nduckduckgo_search - A wrapper around DuckDuckGo Search. Useful for when you need to answer questions about current events. Input should be a search query.\nCalculator(*args: Any, callbacks: Union[List[langchain_core.callbacks.base.BaseCallbackHandler], langchain_core.callbacks.base.BaseCallbackManager, NoneType] = None, tags: Optional[List[str]] = None, metadata: Optional[Dict[str, Any]] = None, **kwargs: Any) -> Any - Useful for when you need to answer questions about math.\n\nUse the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: the action to take, should be one of [duckduckgo_search, Calculator]\nAction Input: the input to the action\nObservation: the result of the action\n... (this Thought/Action/Action Input/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin!\n\nQuestion: {input}\nThought:{agent_scratchpad}'), llm=QianfanChatEndpoint(client=<qianfan.resources.llm.chat_completion.ChatCompletion object at 0x0000019B86B203D0>, qianfan_ak=SecretStr('**********'), qianfan_sk=SecretStr('**********'))), output_parser=MRKLOutputParser(), allowed_tools=['duckduckgo_search', 'Calculator']) tools=[DuckDuckGoSearchRun(), Tool(name='Calculator', description='Useful for when you need to answer questions about math.', func=<bound method Chain.run of LLMMathChain(llm_chain=LLMChain(prompt=PromptTemplate(input_variables=['question'], template='Translate a math problem into a expression that can be executed using Python\'s numexpr library. Use the output of running this code to answer the question.\n\nQuestion: ${{Question with math problem.}}\n```text\n${{single line mathematical expression that solves the problem}}\n```\n...numexpr.evaluate(text)...\n```output\n${{Output of running the code}}\n```\nAnswer: ${{Answer}}\n\nBegin.\n\nQuestion: What is 37593 * 67?\n```text\n37593 * 67\n```\n...numexpr.evaluate("37593 * 67")...\n```output\n2518731\n```\nAnswer: 2518731\n\nQuestion: 37593^(1/5)\n```text\n37593**(1/5)\n```\n...numexpr.evaluate("37593**(1/5)")...\n```output\n8.222831614237718\n```\nAnswer: 8.222831614237718\n\nQuestion: {question}\n'), llm=QianfanChatEndpoint(client=<qianfan.resources.llm.chat_completion.ChatCompletion object at 0x0000019B86B203D0>, qianfan_ak=SecretStr('**********'), qianfan_sk=SecretStr('**********'))))>, coroutine=<bound method Chain.arun of LLMMathChain(llm_chain=LLMChain(prompt=PromptTemplate(input_variables=['question'], template='Translate a math problem into a expression that can be executed using Python\'s numexpr library. Use the output of running this code to answer the question.\n\nQuestion: ${{Question with math problem.}}\n```text\n${{single line mathematical expression that solves the problem}}\n```\n...numexpr.evaluate(text)...\n```output\n${{Output of running the code}}\n```\nAnswer: ${{Answer}}\n\nBegin.\n\nQuestion: What is 37593 * 67?\n```text\n37593 * 67\n```\n...numexpr.evaluate("37593 * 67")...\n```output\n2518731\n```\nAnswer: 2518731\n\nQuestion: 37593^(1/5)\n```text\n37593**(1/5)\n```\n...numexpr.evaluate("37593**(1/5)")...\n```output\n8.222831614237718\n```\nAnswer: 8.222831614237718\n\nQuestion: {question}\n'), llm=QianfanChatEndpoint(client=<qianfan.resources.llm.chat_completion.ChatCompletion object at 0x0000019B86B203D0>, qianfan_ak=SecretStr('**********'), qianfan_sk=SecretStr('**********'))))>)]
prompt--> input_variables=[] template='山东省2023年高考人数是多少'


> Entering new AgentExecutor chain...
[INFO][2024-07-29 21:08:22.357] oauth.py:228 [t:18880]: trying to refresh access_token for ak `CNzMCb***`
[INFO][2024-07-29 21:08:24.915] oauth.py:243 [t:18880]: sucessfully refresh access_token
Thought: 这个问题的关键是需要查找“山东省2023年高考人数”。

Action: duckduckgo_search
Action Input: 查询输入为“山东省2023年高考人数”
Observation: 一、山东高考考生人数2023. 山东是我国的教育大省 ,高考人数位列前茅, 2023年山东省高考报名考生98万人,其中春季高考26万人, 春季高考 一般在山东等地会举行春季高考。 夏季高考72万人, 这是全国绝大多数地区所举行的高考形式。 参加夏季高考统一考试考生67万人,比2022年增加7万人。 今天就给大家整理了2023年山东高考6选3选科数据分析,希望能帮助广大考生和家长们理清选科思路~. 2023山东高考概况梳理. 2023山东高考考生人数及升学基本情况. 据统计, 2023年全省考生人数共计达97.76万 ,其中夏季编场人数为66.86万(较2022年增长6.98万人 ... 原创 2023年山东高考录取数据出炉,录取率86.96%,滑档生9月下旬还有注册入学机会. 2023年山东高考录取数据出炉,录取率86.96%,滑档生9月下旬还有注册入学机会. 录取总人数比去年增加46967人。. 这说明尚有6402人未达到150分 (含缺考)。. 这样,2023年本科录取率 ... 今天(8月4日)上午9:00,山东省教育厅举行2023年普通高考第三次新闻发布会,邀请山东省教育招生考试院普招处处长赵丽,通报2023年山东省普通 ... 山东高考2023年情况汇总. 夏季高考分普通类、艺术类、体育类三类,按类别分批次录取;春季高考分30个专业类别及技能拔尖人才类型,分批次录取。. (一)强基计划. 2020年首次实施强基计划招生。. 考生在提前批之前由招生高校完成录取,不需要填报高考志愿 ...
Thought:我们现在已经知道了山东省2023年的高考人数为98万人。
Final Answer:山东省2023年高考人数为98万人。

> Finished chain.
Memory

LangChain的Memory模块是一个关键的组成部分,它专门用于存储和管理对话上下文信息,大模型本身不具备上下文的概念,它并不保存上次交互的内容,它之所以能够和人正常沟通对话,因为它进行了一层封装,将历史记录回传给了模型。

通过存储对话历史,Memory模块帮助模型更好地理解用户的意图,从而生成更加准确的响应。

代码语言:javascript

from langchain_community.chat_message_histories import ChatMessageHistory

history = ChatMessageHistory()
history.add_user_message("你好")
history.add_ai_message("怎么了?")
print(history.messages)

输出:

代码语言:javascript

[HumanMessage(content='你好'), AIMessage(content='怎么了?')]

或使用ConversationChain:支持对话记忆功能。

代码语言:javascript

from langchain import ConversationChain
llm = QianfanChatEndpoint()
conversation = ConversationChain(llm=llm)
resut1 = conversation.predict(input="小明有一辆自行车")
print(resut1)
print('*'*80)
resut2 = conversation.predict(input="小红有一辆山地车")
print(resut2)
print('*'*80)
resut3 = conversation.predict(input="小明和小红一共有几辆车?")
print(resut3)

输出:

代码语言:javascript

小明的确有一辆自行车。那么您想要询问什么相关信息呢?我了解到了您可以继续提问。
********************************************************************************
是的,小红有一辆山地车。您想要了解关于小红的山地车的什么信息呢?请告诉我,我会尽力帮助您。
********************************************************************************
根据您提供的信息,小明有一辆自行车,小红有一辆山地车。因此,小明和小红一共有两辆车。请问您需要我帮助您做些什么呢?

可以看到加入ConversationChain后,模型可以记忆之前的聊天了。

如果想要像文心一言一样,长期保存历史消息,,可以使用messages_to_dict 方法:

代码语言:javascript

from langchain_community.chat_message_histories import ChatMessageHistory
from langchain.schema import messages_from_dict, messages_to_dict

history = ChatMessageHistory()
history.add_user_message("hello!")
history.add_ai_message("whats up?")

dicts = messages_to_dict(history.messages)

print(dicts)

now_messages = messages_from_dict(dicts)

print(now_messages)

输出:

代码语言:javascript

[{'type': 'human', 'data': {'content': 'hello!', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': None, 'example': False}}, {'type': 'ai', 'data': {'content': 'whats up?', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': None, 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}}]
[HumanMessage(content='hello!'), AIMessage(content='whats up?')]
Indexes

Indexes组件的目的是让LangChain具备处理文档处理的能力,这些能力包括但不限于文档的加载、转换、存储、检索等。

文档加载器(Document Loaders)

  • 功能:文档加载器是LangChain处理文档的第一步,负责从各种来源加载文档。

文档转换器(Document Converters)

  • 功能:文档转换器在检索过程中发挥着关键作用,它负责将大型文档分割成较小的块,以便更高效地获取文档的相关部分。

向量存储(Vector Stores)

  • 功能:随着嵌入向量的广泛应用,对支持这些向量的数据库的需求也日益增长。

检索器(Retrievers)

  • 功能:检索器是LangChain索引中的核心组件之一,负责根据用户输入检索相关数据。

文档加载器主要基于Unstructured 包,Unstructured 是一个python包,可以把各种类型的文件转换成文本。

代码语言:javascript

from langchain_community.document_loaders import UnstructuredFileLoader
loader = UnstructuredFileLoader('a.txt', encoding='utf-8')
docs = loader.load()

first_01 = docs[0].page_content[:4]
print(first_01)
print('*'*80)
from langchain_community.document_loaders import TextLoader
loader = TextLoader('a.txt', encoding='utf-8')
docs = loader.load()
print(docs)
print(len(docs))
first_01 = docs[0].page_content[:4]
print(first_01)

LangChain支持的文档加载器 :

文档加载器描述
CSVCSV问价
JSON Files加载JSON文件
Jupyter Notebook加载notebook文件
Markdown加载markdown文件
Microsoft PowerPoint加载ppt文件
PDF加载pdf文件
Images加载图片
File Directory加载目录下所有文件
HTML网页

文档分割器

由于模型对输入的字符长度有限制,我们在碰到很长的文本时,需要把文本分割成多个小的文本片段。它基于单个字符分隔符(如空格、换行符等)来拆分文本。

  • RecursiveCharacterTextSplitter:这是LangChain中常用的一个文本分割器,它根据分隔符的层次结构(如双换行符、单换行符、空格等)来拆分文本,旨在通过优先考虑段落和句子等自然边界的拆分来保持文本的结构和连贯性。
  • TokenTextSplitter:按token来分割文本,适用于需要根据词汇或标记来分割文本的场景。
  • MarkdownHeaderTextSplitter:基于指定的标题来分割Markdown文件,适用于Markdown文档的结构化分割。

代码语言:javascript

from langchain.text_splitter import CharacterTextSplitter


text_splitter = CharacterTextSplitter(
    separator = " ", 
    chunk_size = 5,
    chunk_overlap  = 0,
)
a = text_splitter.split_text("a b c d e f")
print(a)
b = text_splitter.create_documents(["a b c d e f", "e f g h"], )
print(b)
  • separator = " ":设置分隔符为空格。这意味着文本将在空格处被分割。
  • chunk_size = 5:设置每个分割块的大小为 5。这意味着每次分割将产生包含最多 5 个字符的文本块。
  • chunk_overlap = 0:设置分割块之间的重叠量为 0。这意味着分割块之间不会有任何重叠,每个分割都是独立的。

输出:

代码语言:javascript

['a b c', 'd e f']
[Document(page_content='a b c'), Document(page_content='d e f'), Document(page_content='e f g'), Document(page_content='h')]
VectorStores

VectorStores即向量存储,是LangChain中用于存储和检索向量数据的组件;是连接语言模型与实际应用数据的关键桥梁,这些向量数据通常是通过文本嵌入模型(如Word2Vec、BERT、Sentence Transformers等)将文本转换成数值向量得到的。这些向量能够在多维空间中捕捉词语或文档之间的语义相似性,从而为基于内容的搜索提供基础。

langchain.vectorstores.FAISS模块封装了FAISS库的功能,可以将文本嵌入向量存储在FAISS向量数据库中。这些向量可以表示文档、段落或任何其他形式的文本数据。

先看一下原数据:

我们要写一句话,根据输入的查询进行相似性搜索,最后返回与查询最相关的文档。

代码语言:javascript

from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import QianfanEmbeddingsEndpoint

loader = TextLoader('./pku.txt',encoding='utf-8')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0)
texts = text_splitter.split_documents(documents)
print(texts)

embeddings = QianfanEmbeddingsEndpoint()

db = FAISS.from_documents(texts, embeddings)
# 相当于创建了根据这个嵌入模型的向量数据库
retriever = db.as_retriever(search_kwargs={'k': 1})
# 输出一个最相关的
docs = retriever.get_relevant_documents("北京大学什么时候成立的")
print(docs)

输出:

代码语言:javascript

[Document(metadata={'source': './pku.txt'}, page_content='北京大学创办于1898年,是戊戌变法的产物,也是中华民族救亡图存、兴学图强的结果,初名京师大学堂,是中国近现代第一所国立综合性大学,辛亥革命后,于1912年改为现名。'), Document(metadata={'source': './pku.txt'}, page_content='在悠久的文明历程中,古代中国曾创立太学、国子学、国子监等国家最高学府,在中国和世界教育史上具有重要影响。北京大学“上承太学正统,下立大学祖庭”,既是中华文脉和教育传统的传承者,也标志着中国现代高等教育的开端。其创办之初也是国家最高教育行政机关,对建立中国现代学制作出重要历史贡献。'), Document(metadata={'source': './pku.txt'}, page_content='作为新文化运动的中心和五四运动的策源地,作为中国最早传播马克思主义和民主科学思想的发祥地,作为中国共产党最初的重要活动基地,北京大学为民族的振兴和解放、国家的建设和发展、社会的文明和进步做出了突出贡献,在中国走向现代化的进程中起到了重要的先锋作用。爱国、进步、民主、科学的精神和勤奋、严谨、求实、创新的学风在这里生生不息、代代相传。'), Document(metadata={'source': './pku.txt'}, page_content='1917年,著名教育家蔡元培就任北京大学校长,他“循思想自由原则,取兼容并包主义”,对北京大学进行了卓有成效的改革,促进了思想解放和学术繁荣。陈独秀、李大钊、毛泽东以及鲁迅、胡适、李四光等一批杰出人士都曾在北京大学任教或任职。'), Document(metadata={'source': './pku.txt'}, page_content='1937年卢沟桥事变后,北京大学与清华大学、南开大学南迁长沙,共同组成国立长沙临时大学。1938年,临时大学又西迁昆明,更名为国立西南联合大学。抗日战争胜利后,北京大学于1946年10月在北平复员。')]
[INFO][2024-07-29 21:45:12.597] oauth.py:228 [t:4572]: trying to refresh access_token for ak `CNzMCb***`
[INFO][2024-07-29 21:45:14.418] oauth.py:243 [t:4572]: sucessfully refresh access_token
D:\apollo\anaconda\lib\site-packages\langchain_core\_api\deprecation.py:139: LangChainDeprecationWarning: The method `BaseRetriever.get_relevant_documents` was deprecated in langchain-core 0.1.46 and will be removed in 0.3.0. Use invoke instead.
  warn_deprecated(
[Document(metadata={'source': './pku.txt'}, page_content='北京大学创办于1898年,是戊戌变法的产物,也是中华民族救亡图存、兴学图强的结果,初名京师大学堂,是中国近现代第一所国立综合性大学,辛亥革命后,于1912年改为现名。')]

可以看出还是很符合我们的想法的~

通过学习LangChain的组件,我们可以再根据官方文档,去完成新的项目。

  1. 文本检索与搜索: 利用LangChain的文本加载器、文本分割器、向量存储和嵌入模型,可以构建一个强大的文本检索系统。该系统能够对大量文本数据进行索引,并支持基于语义的搜索查询,快速返回最相关的结果。
  2. 文档相似度分析: 通过计算文档之间的向量相似度,LangChain可以帮助识别内容相似的文档或段落。在去重、推荐系统或内容聚类等场景中非常有用。
  3. 自然语言理解与应用: LangChain与各种自然语言处理(NLP)模型兼容。可以利用这些模型进行文本分类、情感分析、实体识别等任务,进而构建聊天机器人、智能客服或文本分析工具。

程序员为什么要学大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

继科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线 ↓

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容:

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容:

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容:

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容:

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

【Langchain学习笔记(二)】Langchain安装及使用示例 本文中介绍 Langchain 安装方法, 什么是 LangSmith 及其作用, 如何调用国产大模型,并以简单案例进行展示。 阅读详情

相关推荐

python langchain多轮调用AI大模型与@tool工具使用 demo

本文介绍了使用Python LangChain框架调用AI大模型的方法,重点演示了单轮和多轮对话的实现。LangChain是一个连接大语言模型与外部工具的开发框架,支持通过@tool装饰器将本地函数、API调用等封装为可被模型调用的工具。文章提供了完整的代码示例,包括天气查询工具定义、系统提示词设置、DeepSeek模型调用等关键步骤,并展示了如何通过绑定工具和构建消息历史来实现多轮对话。测试结果表明,该方法能有效实现基于工具调用的智能问答功能。

杨杨杨~~的博客 2358

LangChain使用总结

LangChain自身并不开发LLMs,它的核心理念是为各种LLMs实现通用的接口,把LLMs相关的组件“链接”在一起,简化LLMs应用的开发难度,方便开发者快速地开发复杂的LLMs应用.

m0_60916732的博客 1189

使用Yuan 2.0与LangChain构建智能聊天应用:完整指南

Yuan 2.0是 IEIT 系统开发的新一代基础大语言模型,包括 Yuan 2.0-102B、Yuan 2.0-51B 和 Yuan 2.0-2B 三种版本。相比之前的 Yuan 1.0,Yuan 2.0 使用了更广泛的高质量预训练数据,并通过指令微调数据集增强了模型的语义理解、数学推理、编程知识等能力。为了方便开发者集成,Yuan 2.0 提供了兼容 OpenAI API 的服务接口。本文将介绍如何通过LangChain的ChatYuan2模块,与 Yuan 2.0 进行交互构建聊天系统。

scaFHIO的博客 1650

【LLM】-17-会话存储

LLM大模型本身并不具备记忆、存储功能,是无状态的; LangChain 提供了多种储存类型,本质上是将历史的对话内容暂时存储,并在下次一并发送给模型,但这种存储功能,增加了大模型在内容解析、性能资源的消耗。 本文基于Langchain-chat-0.2.x版本 + chatglm3-6b 模型部署使用 1、会话存储类型 对话缓存储存 即储存了当前为止所有的对话信息 对话缓存窗口储存 随着对话变得越来越长,所需的内存量也变得非常长。将大量的tokens发送到LLM的成本,也会变得更加昂贵。

宣晨光 3237

使用langchain和大模型API提取QA的实战教程

本文主要介绍了使用langchain和大模型API提取QA的实战教程,希望能对学习大模型的同学们有所帮助。提取后的json部分内容如下所示。 文章目录 1. 前言 2. 实战教程 2.1 搭建环境 2.2 实战代码 2.3 实战案例

herosunly的博客 13万+

VScode - 从入门到精通:高效开发环境搭建指南

本文是一份全面的VSCode高效开发环境搭建指南。从选择理由、安装配置、核心插件推荐到个性化设置与高效技巧,详细讲解了如何将这款轻量级编辑器武装成强大的开发工具。重点介绍了GitLens、Prettier、Live Server等必备插件,以及通过用户设置、代码片段和快捷键打造专属高效工作流的方法,帮助开发者从入门到精通。

weixin_27734811的博客 426

LangChain 46 深入理解LangChain 表达式语言十 Runnable 调用中间状态调试日志 LangChain Expression Language (LCEL)

所有可运行的对象也都有一个方法,用于流式传输(在发生时)链/序列的所有或部分中间步骤。这对于向用户显示进度,使用中间结果或调试您的链条非常有用。您可以流式传输所有步骤(默认)或按名称、标签或元数据包含/排除步骤。该方法产生操作,当按接收顺序应用时,构建出 RunState。

AI架构师易筋 1854

卫星测试科普(三):卫星载荷的核心测试设备探秘

总的说来,卫星芯片与元器件,部组件与单机,整机与子系统,系统与整星的设计、定型、制造、验证、总装、发射、在轨等环节都离不开各种测试场景,对于这些卫星测试场景而言,“射频三大件”与高速数字示波器是构成强大测试系统的基础。卫星通信信号生成:覆盖Ka、Q等波段,具备扫频、脉冲、数字调制、噪声信号、雷达信号、数据链信号、OFDM 等多种信号库,用于测试和验证卫星电子设备的电气性能、频率响应、抗干扰能力等。卫星的通信需要高效、快速地传输大量数据,高速信号的质量至关重要,如果卫星信号不佳,卫星就会出现故障或者隐患。

spwbjss的博客 2319

4.应用层

我们基于 LangChain 提供的检索问答链,在 LLM 层、数据库层的基础上,实现了本项目检索问答链的封装。print(f"检索到的第{i}个内容: \n {doc.page_content}", end="\n-----------------------------------------------------\n")关于更多的 Memory 的使用,包括保留指定对话轮数、保存指定 token 数量、保存历史对话的总结摘要等内容,请参考 langchain 的 Memory 部分的相关文档。

qq_62497235的博客 968

基于Docker的D435i相机与IMU联合标定实战指南

本文详细介绍了基于Docker的D435i相机与IMU联合标定实战指南,涵盖kalibr镜像构建、IMU标定全流程、双目相机标定技巧及联合标定结果验证。通过Docker容器化部署,简化了复杂依赖环境,提升标定效率与精度,适用于机器人视觉与SLAM应用。

weixin_30872337的博客 239

从零到一:Ollama工具在RK3588上的深度优化实践

本文详细介绍了如何在RK3588开发板上深度优化Ollama工具,以高效运行DeepSeek模型。通过CPU与NPU负载平衡、模型量化、温度控制等策略,显著提升性能并降低功耗,适用于边缘计算场景。文章提供了具体的配置命令和优化方案,帮助开发者充分发挥RK3588的硬件潜力。

rgv23456789的博客 311

Langchain-Chatchat 部署本地知识库

使用 LangChain-Chatchat,基于在线 LLM 模型(智谱AI API)和离线 Embedding 模型(text2vec-base-chinese 或 bge-base-zh-v1.5)搭建本地知识库。

Sumkor的博客 5416

手把手教你学PCIE-- 热插拔电路设计与实现方案

PCIe热插拔(Hot-Plug)技术允许用户在系统运行时安全地插入或移除设备,而无需重启系统。本文将深入讲解热插拔电路的设计要点、关键器件选型及信号协议规范,涵盖机械结构、电气保护和电源管理三大核心模块。​。

MHD0815的博客 440

Langchain--如何使用大模型 2.0

我们除了可以使用Langchain进行模型对话、提示词创作、嵌入模型,还可以使用其他的组件对大模型封装使用,打造我们自己的大模型。

小森的博客 2469

绿米Aqara S1【妙控开关 S1E】版本降级或升级自定义固件的方法

绿米Aqara S1【妙控开关 S1E】版本降级或升级自定义固件的方法

LeeKwen的专栏 2171

车载以太网网络测试-27【SOME/IP-SD简述】

SOME/IP-SD协议是基于IP的可扩展面向服务中间件中的服务发现协议,是汽车电子和嵌入式系统中实现动态服务发现与通信的核心组件。该协议规范详细说明了协议SOME/IP服务发现(SOME/IP-SD)的格式、消息序列和语义。本文将对SOME/IP-SD协议进行详细介绍。

车载网络测试工程师的博客 1956

RAG:Langchain中使用自己的LLM大模型

在使用Langchain做RAG和Agent项目中,智能核心是LLM大语言模型;配置好模型是整个流程跑起来的关键。然而很多人初学者在为没有OpenAI的api-key而苦恼,在寻找代理或者替代品中花费了很多的时间。本篇文章将为大家介绍在langchain中使用自己大模型的方法,帮助大家扫清障碍快速搭建RAG和Agent流程。我们选择选择Qwen最新发布的Qwen2-0.5B-Instruct模型,模型可以提前下载好,也可以加载的时候下载。

m0_59163425的博客 1422

【K8S系列】Kubernetes 中 Service 的流量不均匀问题【已解决】

在 Kubernetes 中,Service 是一种抽象,用于定义一组 Pod 的访问策略。当某些 Pod 接收的流量过多,而其他 Pod 的流量较少时,可能会导致负载不均衡。这种情况不仅影响性能,还可能导致某些 Pod 过载,影响应用的可用性。本文将详细分析此问题的原因及其解决方案。

颜淡慕潇 8739

大模型、AI-Agent、langchain之间的关系

大模型、AI-Agent和langchain代表了人工智能领域的发展趋势,具有广泛的应用前景。然而,它们也面临着一些挑战和问题,如数据隐私、模型解释性、计算资源等。未来,随着技术的不断进步和应用的不断拓展,这些问题将得到更好的解决,大模型、AI-Agent和langchain将在更多领域发挥更大的作用。

DUT_LYH 1417

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【LLM大模型】Langchain--如何使用大模型 2.0

我们除了可以使用Langchain进行模型对话、提示词创作、嵌入模型,还可以使用其他的组件对大模型封装使用,打造我们自己的大模型。

DEVELOPERAA的博客 1397

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

零基础学AI大模型之LangChain

本文介绍了LangChain框架及其在AI应用开发中的核心价值。文章首先分析了大模型的三大局限(信息滞后、功能受限、缺乏规划能力)和开发者的痛点,指出单独调用大模型API难以满足复杂需求。随后通过类比SpringCloud和"万能转接器",形象地解释了LangChain作为连接和编排框架的作用。重点剖析了LangChain三大核心组件:Chain(任务链)、Agent(智能代理)和Memory(记忆功能),并通过具体场景说明其应用价值。最后对比Java生态,介绍了LangChain的完整

chandfy的博客 1904

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

业界首个开源千亿模型适配Langchain框架,基于Yuan2.0搭建本地大模型应用

近日,Yuan2.0全系列大模型完成了对Langchain框架的适配,用户可以基于Langchain框架快速开发出各类大模型应用。同时,借助Langchain这套成熟的框架,开发者仅需修改少量代码即可完成后端大模型平滑迁移。Langchain简介。Langchain 是一个利用语言模型开发应用程序的框架。

2401_82700030的博客 1799

LLM大模型:Langchain--如何使用大模型 2.0

我们除了可以使用Langchain进行模型对话、提示词创作、嵌入模型,还可以使用其他的组件对大模型封装使用,打造我们自己的大模型。

huang9604的博客 885

【值得收藏】LangChain 1.0全面解析:从安装到实战,掌握大模型应用开发

LangChain于2025年10月发布1.0版本,本文详细介绍了安装升级过程并通过实例展示了如何创建智能代理获取天气信息。LangChain作为大模型与本地数据源和业务逻辑之间的桥梁,使大模型能够"落地",与用户的实际场景关联,提供更贴合的回复。下一篇文章将介绍如何用LangChain实现连续动作。

m0_74942241的博客 1520

快速接入AI大模型 - Langchain4j 实战

前面我们根据官网的文档描述,编写了一个简单的入门案例,相信你可能有点感觉了,接下来我们就来简单介绍下 Langchain4j 是什么,能做什么以及出现的背景和主要解决什么问题。en,头大了,真不上写这些没有意义的文字,,,,前面我们 既然它能和GPT交互,那我们也可以直接GPT吧。修改一下chat 方法的入参String answer = model.chat("我现在很想知道 Langchain4j 是什么,能做什么,出现的背景以及它主要是为了解决什么问题");运行main函数后我们看控制台输出的信息。

代码洁癖症患者 9877

LLM大模型学习:Langchain结合AI大模型

LangChain 是一个用于构建应用程序的框架,特别是那些与语言模型(如 GPT-3、GPT-4 等)交互的应用。它的主要目标是简化与自然语言处理(NLP)相关的开发过程,使开发者能够更容易地创建、管理和部署基于语言模型的应用。

m0_63171455的博客 1018
上一篇: LangChain--如何使用AI大模型
下一篇: 【开源免费,一键部署】Llama Coder V2:这款完全免费的 AI Coder 击败了 V0 和 Bolt吗?
Llama-Turbo
博客等级 码龄4年 9901粉丝 2022原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值