初识LangChain的快速入门指南

LangChain

概述

LangChain是一个基于大语言模型用于构建端到端语言模型应用的框架,它提供了一系列工具、套件和接口,让开发者使用语言模型来实现各种复杂的任务,如文本到图像的生成、文档问答、聊天机器人等。

LangChain简化了LLM应用程序生命周期的各个阶段:

开发阶段:使用LangChain的开源构建块和组件构建应用程序,利用第三方集成和模板快速启动。生产化阶段:使用LangSmith检查、监控和评估您的链,从而可以自信地持续优化和部署。部署阶段:使用LangServe将任何链转化为API。

参考文档:https://python.langchain.com

六大组件

LangChain具有六大组件,它们是LangChain的基石,它们相互协作,形成一个强大而灵活的系统。

模型(Models):包含各大语言模型的LangChain接口和调用细节,以及输出解析机制。提示模板(Prompts):使提示工程流线化,进一步激发大语言模型的潜力。数据检索(Indexes):构建并操作文档的方法,接受用户的查询并返回最相关的文档,轻松搭建本地知识库。记忆(Memory):通过短时记忆和长时记忆,在对话过程中存储和检索数据,让ChatBot记住你。链(Chains):LangChain中的核心机制,以特定方式封装各种功能,并通过一系列的组合,自动而灵活地完成任务。代理(Agents):另一个LangChain中的核心机制,通过“代理”让大模型自主调用外部工具和内部工具,使智能Agent成为可能。

表格快速预览

英文中文说明
Models模型LangChain和大模型的接口
ChainsLangChain对各种组件的封装和调用链条
Prompts提示输入大模型的提示模板
Indexes索引非结构化数据的查找和访问
Memory记忆(内存)与大模型聊天过程中记忆信息
Agents代理自主计划和执行的机制

开源库组成

LangChain框架由以下开源库组成:

css
langchain-core :基础抽象和LangChain表达式语言langchain-community :第三方集成。合作伙伴包(如langchain-openai、langchain-anthropic等),一些集成已经进一步拆分为自己的轻量级包,只依赖于langchain-corelangchain :构成应用程序认知架构的链、代理和检索策略langgraph:通过将步骤建模为图中的边和节点,使用 LLMs 构建健壮且有状态的多参与者应用程序langserve:将 LangChain 链部署为 REST APILangSmith:一个开发者平台,可让您调试、测试、评估和监控LLM应用程序,并与LangChain无缝集成

在这里插入图片描述

LangChain基本使用

构建一个 LangChain应用程序来熟悉该框架。

安装LangChain

安装指定版本的LangChain,这里安装截止目前的最新版本

python
pip install langchain==0.1.7

执行安装LangChain命令后,会自动安装以下相关组件

python
Installing collected packages: langsmith, langchain-core, langchain-text-splitters, langchain-community, langchain

更新LangChain

python
pip install --upgrade langchain

克隆LangChain存储库从源代码安装

python
pip install -e

安装LangChain时包括常用的开源LLM(大语言模型) 库

python
pip install langchain[llms]

配置环境变量

安装第三方集成库,以使用OpenAI

python
pip install langchain langchain_openai

设置OpenAI环境变量

python
import osos.environ["OPENAI_BASE_URL"] = "https://xxx.com/v1"
os.environ["OPENAI_API_KEY"] = "sk-fDqouTlU62yjkBhF46284543Dc8f42438a9529Df74B4Ce65"

基本使用

python
# 初始化模型
from langchain_openai import ChatOpenAIllm = ChatOpenAI()# 安装并初始化选择的LLM,就可以尝试使用它
llm.invoke(" LangSmith 是什么?")
python
AIMessage(content='LangSmith是一个虚构的名字,没有具体的定义或含义。它可能是一个人的名字、一个公司的名称或者一种产品的品牌。', response_metadata={'token_usage': {'completion_tokens': 44, 'prompt_tokens': 14, 'total_tokens': 58}, 'model_name': 'gpt-3.5-turbo', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None}, id='run-f39ca76e-06ef-4815-ba7e-4a4924ef8e48-0')

使用提示模板

使用提示模板来指导其响应。 提示模板将原始用户输入转换为更好的 LLM 输入

python
# 初始化模型
from langchain_openai import ChatOpenAIllm = ChatOpenAI()# 创建提示模板
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([("system", "您是世界级的技术文档编写者。"),("user", "{input}")
])# 组合成一个简单的 LLM 链
chain = prompt | llm # 使用LLM链
chain.invoke({"input": "Langsmith 如何帮助进行测试?"})

虽然它依然不知道答案,但对于技术作者来说,它使用了更恰当的语气给予回应。

python
AIMessage(content='Langsmith 可以帮助测试团队进行测试的文档编写工作。作为一名世界级的技术文档编写者,我可以为您提供以下帮助:\n\n1. 编写测试计划:根据项目需求,我可以帮助您编写详细的测试计划,包括测试目标、测试范围、测试资源、测试策略等内容。\n\n2. 编写测试用例:我可以帮助您编写全面的测试用例,覆盖各种功能、场景和边界条件。测试用例将详细描述每个测试步骤、预期结果和实际结果。\n\n3. 编写测试报告:在测试完成后,我可以帮助您编写清晰、详细的测试报告,包括测试执行情况、发现的缺陷、测试总结等内容。\n\n4. 优化测试文档:如果您已经有测试文档,但希望对其进行优化,使其更加规范、易读、易理解,我也可以提供帮助。\n\n无论您需要哪方面的帮助,我都可以根据您的具体需求提供定制化的服务。请告诉我您的具体要求,我将尽力满足您的需求。', response_metadata={'token_usage': {'completion_tokens': 355, 'prompt_tokens': 39, 'total_tokens': 394}, 'model_name': 'gpt-3.5-turbo', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None}, id='run-b2ed1dbe-b57e-4472-ab19-61536a238c8d-0')

使用输出解析器

添加一个简单的输出解析器,将聊天消息转换为字符串。

python
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser# 初始化模型
llm = ChatOpenAI()# 创建提示模板
prompt = ChatPromptTemplate.from_messages([("system", "您是世界级的技术文档编写者。"),("user", "{input}")
])# 使用输出解析器
output_parser = StrOutputParser()# 将其添加到上一个链中
chain = prompt | llm | output_parser# 调用它并提出同样的问题。答案是一个字符串,而不是ChatMessage
chain.invoke({"input": "Langsmith 如何帮助进行测试?"})
python
'Langsmith 可以帮助测试团队进行测试的文档编写工作。作为一名世界级的技术文档编写者,我可以为您提供以下帮助:\n\n1. 编写测试计划:根据项目需求,我可以帮助您编写详细的测试计划,包括测试目标、测试范围、测试资源、测试策略等内容。\n\n2. 编写测试用例:我可以帮助您编写全面的测试用例,覆盖各种功能、场景和边界条件。测试用例将详细描述每个测试步骤、预期结果和实际结果。\n\n3. 编写测试报告:在测试完成后,我可以帮助您编写清晰、详细的测试报告,包括测试执行情况、发现的缺陷、测试总结等内容。\n\n4. 优化测试文档:如果您已经有测试文档,但希望对其进行优化,使其更加规范、易读、易理解,我也可以提供帮助。\n\n无论您需要哪方面的帮助,我都可以根据您的具体需求提供定制化的服务。请告诉我您的具体要求,我将尽力满足您的需求。'

向量存储

加载要索引的数据,需要安装BeautifulSoup

python
pip install beautifulsoup4

将其索引到向量存储中。这需要一些组件,即嵌入模型和向量存储。

使用一个简单的本地向量存储 FAISS,首先需要安装它

python
pip install faiss-cpu
python
# 导入和使用 WebBaseLoader
from langchain_community.document_loaders import WebBaseLoaderloader = WebBaseLoader("https://docs.smith.langchain.com/user_guide")
docs = loader.load()# 对于嵌入模型,这里通过 API调用
from langchain_openai import OpenAIEmbeddingsembeddings = OpenAIEmbeddings()#使用此嵌入模型将文档摄取到矢量存储中
from langchain_community.vectorstores import FAISS
from langchain_text_splitters import RecursiveCharacterTextSplitter# 使用分割器分割文档
text_splitter = RecursiveCharacterTextSplitter()
documents = text_splitter.split_documents(docs)
# 向量存储
vector = FAISS.from_documents(documents, embeddings)

检索链

已在向量存储中索引了这些数据,接下来要创建一个检索链。该链将接收一个传入的问题,查找相关文档,然后将这些文档与原始问题一起传递给LLM,要求它回答原始问题。

创建一个链,该链接受一个问题和检索到的文档并生成一个答案。

python
from langchain.chains.combine_documents import create_stuff_documents_chainprompt = ChatPromptTemplate.from_template("""仅根据提供的上下文回答以下问题:<context>
{context}
</context>Question: {input}""")# 创建链,该链获取文档列表并将它们全部格式化为提示,然后将该提示传递给LLM。它传递所有文档,因此应该确保它适合正在使用的 LLM 上下文窗口
document_chain = create_stuff_documents_chain(llm, prompt)# 可以直接通过传入文档来运行它
from langchain_core.documents import Documenttext ="langsmith can let you visualize test results"
document_chain.invoke({"input": "Langsmith 如何帮助进行测试?","context": [Document(page_content=text)]
})
python
'LangSmith 提供了多种方式来帮助进行测试。\n\n首先,LangSmith 支持开发人员创建数据集,这些数据集是输入和参考输出的集合,并使用这些数据集在他们的 LLM 应用程序上运行测试。开发人员可以批量上传、动态创建或从应用程序跟踪中导出测试用例。此外,LangSmith 还可以轻松运行自定义评估来对测试结果进行评分。\n\n其次,LangSmith 提供比较视图,可以并排查看同一数据点上不同配置的结果。这对于对应用程序的不同版本进行原型设计和更改时非常有用,可以帮助开发人员了解哪个变体的性能更好。\n\n此外,LangSmith 还提供了一个 Playground 环境,可以用于快速迭代和实验。开发人员可以在 Playground 中快速测试不同的提示和模型,并将每次运行记录在系统中以供后续创建测试用例或与其他运行进行比较。\n\n最后,LangSmith 还支持自动化,可以近乎实时地对跟踪执行操作。开发人员可以定义自动化操作,包括评分、发送到注释队列或添加到数据集等。这对于在生产规模上处理跟踪非常有用。'

还可以让文档首先来自刚刚设置的检索器。 这样,可以使用检索器动态选择最相关的文档,并将其传递给给定的问题。

python
from langchain.chains import create_retrieval_chain# 创建向量存储检索器
retriever = vector.as_retriever()
# 创建链,该链接收用户查询,然后将其传递给检索器以获取相关文档。然后将这些文档(和原始输入)传递到 LLM 以生成响应
retrieval_chain = create_retrieval_chain(retriever, document_chain)
# 执行检索 这将返回一个字典
response = retrieval_chain.invoke({"input": "how can langsmith help with testing?"})
print(response["answer"])

答案应该更准确

python
LangSmith can help with testing in several ways. 1. LangSmith allows developers to create datasets, which are collections of inputs and reference outputs, and use these to run tests on their LLM applications. Test cases can be uploaded in bulk, created on the fly, or exported from application traces.2. LangSmith provides a user-friendly comparison view for test runs. This allows developers to compare the results of different configurations on the same datapoints side-by-side, helping them identify any regressions or improvements.3. LangSmith supports custom evaluations, both LLM-based and heuristic-based, to score test results.Overall, LangSmith enables developers to perform test-driven development and evaluate the performance of their LLM applications during the prototyping and beta testing phases.

对话检索链

上面创建的链只能回答单个问题。现在创建一个新链。该链将接收最新的输入和对话历史记录,并使用 LLM 生成搜索查询。

python
from langchain.chains import create_history_aware_retriever
from langchain_core.prompts import MessagesPlaceholder# First we need a prompt that we can pass into an LLM to generate this search queryprompt = ChatPromptTemplate.from_messages([MessagesPlaceholder(variable_name="chat_history"),("user", "{input}"),("user", "鉴于上述对话,生成一个搜索查询以查找以获取与对话相关的信息")
])
retriever_chain = create_history_aware_retriever(llm, retriever, prompt)# 通过传入用户提出后续问题来测试
from langchain_core.messages import HumanMessage, AIMessagechat_history = [HumanMessage(content="LangSmith 可以帮助测试我的 LLM 应用程序吗?"), AIMessage(content="Yes!")]
retriever_chain.invoke({"chat_history": chat_history,"input": "告诉我怎么做"
})

还可以创建一个新的链来继续对话,并牢记这些检索到的文档。

python
prompt = ChatPromptTemplate.from_messages([("system", "根据以下上下文回答用户的问题:\n\n{context}"),MessagesPlaceholder(variable_name="chat_history"),("user", "{input}"),
])document_chain = create_stuff_documents_chain(llm, prompt)
retrieval_chain = create_retrieval_chain(retriever_chain, document_chain)# 测试
chat_history = [HumanMessage(content="LangSmith 可以帮助测试我的 LLM 应用程序吗?"), AIMessage(content="Yes!")]
retrieval_chain.invoke({"chat_history": chat_history,"input": "Tell me how"
})

代理的使用

构建代理时要做的第一件事是确定它应该有权访问哪些工具。这里授予代理访问两个工具的权限:

使用创建的检索器,以便代理能够回答有关LangSmith的问题。一个搜索工具,以使代理能够回答需要最新信息的问题。

检索器工具

python
from langchain.tools.retriever import create_retriever_toolretriever = vector.as_retriever()
retriever_tool = create_retriever_tool(retriever,"langsmith_search","搜索有关 LangSmith 的信息。对于有关LangSmith的任何问题,您必须使用此工具!",
)

创建搜索工具

访问Tavily,注册账号登录并创建API秘钥,然后配置环境变量

pythonimport osos.environ["TAVILY_API_KEY"] = 'tvly-ScxxxxxxxM8'

安装tavily-python库

pythonpip install -U langchain-community tavily-python

创建工具

pythonfrom langchain_community.tools.tavily_search import TavilySearchResultssearch = TavilySearchResults()

创建代理

创建使用工具的列表

pythontools = [retriever_tool, search]

创建一个代理来使用工具

pythonfrom langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import create_openai_functions_agent
from langchain.agents import AgentExecutor# 获取使用提示 可以修改它
prompt = hub.pull("hwchase17/openai-functions-agent")
# 初始化大模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
# 创建一个openai_functions_agent代理
agent = create_openai_functions_agent(llm, tools, prompt)
# 创建代理执行器
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

使用Agent代理

python# 执行Agent
agent_executor.invoke({"input": "Langsmith 如何帮助进行测试?"})

在这里插入图片描述 询问天气情况

python# 执行Agent
agent_executor.invoke({"input": "成都今天天气情况?"})
python> Entering new AgentExecutor chain...Invoking: `tavily_search_results_json` with `{'query': '成都今天天气情况'}`[{'url': 'http://www.nmc.cn/publish/forecast/ASC/chengdu.html', 'content': '成都天气预报 ; 省份: 城市: ... 制作维护:国家气象中心预报系统开放实验室 地址:北京市中关村南大街46号 邮编:100081 . 京公网安备 11040102700100 ...'},
{'url': 'http://www.weather.com.cn/weather/101270101.shtml', 'content': '涂擦SPF大于15、PA+防晒护肤品。\n天凉,湿度大,较易感冒。\n天气凉,在户外运动请注意增减衣物。\n无需担心过敏,可放心外出,享受生活。\n建议着厚外套加毛衣等服装。\n天气较好,适合擦洗汽车。\n辐射弱,涂擦根据天气预报,成都今天的天气情况为晴,气温为0℃,风力小于3级。明天将转为多云,最高气温12℃,最低气温0℃,风力小于3级。> Finished chain.

进行对话

pythonfrom langchain_core.messages import SystemMessage, HumanMessage, AIMessagechat_history = [HumanMessage(content="LangSmith 可以帮助测试我的 LLM 应用程序吗?"), AIMessage(content="Yes!")]
agent_executor.invoke({"chat_history": chat_history,"input": "告诉我怎么做"
})

LangServe提供服务

概述

LangServe可以帮助开发人员将LangChain应用程序部署为REST API。使用LangChain时不是必定使用LangServe。

安装langserve

pythonpip install "langserve[all]"

创建服务

创建一个serve.py文件。包含为应用程序提供服务的逻辑。由三部分组成:


构建的链的定义FastAPI应用程序为链提供服务的路由的定义,由langserve.add_routes命令完成
pythonimport os
from typing import Listfrom fastapi import FastAPI
from langchain import hub
from langchain.agents import AgentExecutor
from langchain.agents import create_openai_functions_agent
from langchain.pydantic_v1 import BaseModel, Field
from langchain.tools.retriever import create_retriever_tool
from langchain_community.document_loaders import WebBaseLoader
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_community.vectorstores import FAISS
from langchain_core.messages import BaseMessage
from langchain_openai import ChatOpenAI
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langserve import add_routesos.environ["TAVILY_API_KEY"] = 'tvly-Scx77MxxxxIM8'
os.environ["OPENAI_BASE_URL"] = "https://xxx.com/v1"
os.environ["OPENAI_API_KEY"] = "sk-BGFnOL9Q4c99B378B66cT3BlBKFJ28839b4813bc437B82c2"# 1. 获取检索器
# 创建一个 WebBaseLoader 对象,加载给定 URL 的网页内容
loader = WebBaseLoader("https://docs.smith.langchain.com/user_guide")
# 载入网页内容
docs = loader.load()# 初始化 RecursiveCharacterTextSplitter 对象用于文本拆分
text_splitter = RecursiveCharacterTextSplitter()
# 使用文本拆分器将文档分成段落
documents = text_splitter.split_documents(docs)# 初始化 OpenAIEmbeddings 对象,用于获取文本嵌入
embeddings = OpenAIEmbeddings()
# 从文档中获取嵌入向量并存储
vector = FAISS.from_documents(documents, embeddings)# 将向量对象转换为检索器
retriever = vector.as_retriever()# 2. 创建工具
# 检索器工具
retriever_tool = create_retriever_tool(retriever,"langsmith_search","Search for information about LangSmith. For any questions about LangSmith, you must use this tool!",
)# 搜索工具
search = TavilySearchResults()
tools = [retriever_tool, search]# 3.创建代理
# 从指定的 Hub 拉取提示模板
prompt = hub.pull("hwchase17/openai-functions-agent")# 初始化 ChatOpenAI 对象,选择模型为"gpt-3.5-turbo",设置温度为0
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)# 使用提供的模型、工具和提示创建 OpenAI 函数代理器
agent = create_openai_functions_agent(llm, tools, prompt)# 初始化 AgentExecutor,传入代理器、工具对象和 verbose 标记为 True
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)# 4. 应用定义
app = FastAPI(title="LangChain Server",version="1.0",description="A simple API server using LangChain's Runnable interfaces",
)# 5. 添加路由
class Input(BaseModel):# 定义输入 BaseModel 包含字段 input 和 chat_historyinput: strchat_history: List[BaseMessage] = Field(...,# 为 chat_history 字段添加额外属性,设置 type 为 "chat",input 为 "location"extra={"widget": {"type": "chat", "input": "location"}})class Output(BaseModel):# 定义输出 BaseModel 包含字段 outputoutput: str# 将该配置的agent_executor添加到应用程序app的路由中,路径为 "/agent"
add_routes(app,# agent_executor配置为使用特定的输入和输出类型agent_executor.with_types(input_type=Input, output_type=Output),path="/agent",
)if __name__ == "__main__":# 导入 uvicorn 模块# uvicorn是用于 ASGI 应用程序的轻量级 Web 服务器import uvicorn# 运行主应用程序 app,指定主机为 localhost,端口为 8000uvicorn.run(app, host="localhost", port=8000)

启动服务

执行这个文件启动服务,并在localhost:8000上提供服务

pythonpython serve.py
pythonINFO:     Started server process [18352]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://localhost:8000 (Press CTRL+C to quit)__          ___      .__   __.   _______      _______. _______ .______     ____    ____  _______
|  |        /   \     |  \ |  |  /  _____|    /       ||   ____||   _  \    \   \  /   / |   ____|
|  |       /  ^  \    |   |  | |  |  __     |   (----`|  |__   |  |_)  |    \   /   /  |  |__
|  |      /  /_\  \   |  . `  | |  | |_ |     \   \    |   __|  |      /      \      /   |   __|
|  `----./  _____  \  |  |\   | |  |__| | .----)   |   |  |____ |  |\  ----.  \    /    |  |____
|_______/__/     __\ |__| __|  ______| |_______/    |_______|| _| `._____|   __/     |_______|LANGSERVE: Playground for chain "/agent/" is live at:
LANGSERVE:  │
LANGSERVE:  └──> /agent/playground/
LANGSERVE:
LANGSERVE: See all available routes at /docs/

服务交互

每个 LangServe 服务都带有一个简单的内置 UI,用于配置和调用具有流输出和中间步骤可见性的应用程序。

访问:http://localhost:8000/agent/playground/ 在这里插入图片描述 设置一个客户端,以便以编程方式与我们的服务进行交互。

pythonfrom langserve import RemoteRunnableremote_chain = RemoteRunnable("http://localhost:8000/agent/")
res = remote_chain.invoke({"input": "成都今天天气情况怎样?","chat_history": []
})
print(res)

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql The last packet sent successfully to the server was 0 milliseconds ago.

项目启动后&#xff0c;报错&#xff0c;但是我的navicat 数据库连接工具是连接上的&#xff0c;没有问题的&#xff0c;但是程序就是连接不上。端口放开了&#xff0c;防火墙也放开了 先说问题&#xff1a;是网络问题&#xff0c; 如何解决&#xff1a;因为我的机子上又跑了…

Pytest精通指南(18)多种手段过滤或升级警告

文章目录 前言使用命令行实现过滤未处理警告&#xff0c;执行结果升级警告忽略警告忽略警告摘要 使用装饰器实现过滤装饰方法装饰类装饰模块 使用配置文件实现过滤 前言 在 pytest 中执行测试时&#xff0c;可能会出现警告&#xff0c;这些警告通常是由于代码中存在某些可能导致…

代码随想录算法训练营Day58|LC739 每日温度LC496 下一个更大元素I

一句话总结&#xff1a;单调栈专题&#xff01; 原题链接&#xff1a;739 每日温度 很简单的单调栈入门题。 在使用单调栈解决此题之前&#xff0c;先要想到&#xff1a;单调栈要什么时候用呢&#xff1f;怎么才能想到用单调栈呢&#xff1f; 什么时候用单调栈呢&#xff1f;…

海信发布《黑神话:悟空》定制电视E8N新品,重塑大屏游戏体验

4月17日&#xff0c;在“AI美好生活”2024海信电视E8系列新品发布会上&#xff0c;海信电视官宣成为《黑神话&#xff1a;悟空》全球官方合作伙伴。同时&#xff0c;海信电视还为广大游戏玩家带来了《黑神话&#xff1a;悟空》的显示CP&#xff0c;推出了官方定制电视——旗舰新…

基于SpringBoot的“论坛管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“论坛管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 论坛管理系统结构图 前台首页功能界面图 用户登录…

「GO基础」在Windows上安装Go编译器并配置Golang开发环境

文章目录 1、安装Go语言编译程序1.1、下载GoLang编译器1.2、安装GoLang编译器 2、配置Golang IDE运行环境2.1、配置GO编译器2.1.1、GOROOT 概述2.1.2、GOROOT 作用2.1.2、配置 GOROOT 2.2、配置GO依赖管理2.2.1、Module管理依赖2.2.2、GOPATH 管理依赖 2.3、运行GO程序2.3.1、创…

C# 整数转罗马数字

罗马数字包含以下七种字符:I&#xff0c;V&#xff0c;X&#xff0c;L&#xff0c;C,D和M。 例如&#xff0c;罗马数字2写做 II &#xff0c;即为两个并列的 1。12 写做XII&#xff0c;即为XII。27写做 XXVII,即为XXV II 。 通常情况下&#xff0c;罗马数字中小的数字在大的数字…

一个不同长度元素排序找行和列的需求

1、需求&#xff1a;三种长度的元素&#xff0c;分别是4、8、12&#xff0c;每一行的长度是12&#xff0c;超过12就排到下一行&#xff0c;我们将这三种类型的多个元素打乱&#xff0c;然后找到这些元素对应的行和列。 如下图&#xff1a; 2、解决思路&#xff1a; 创建一个长…

Ubuntu 20.04.6下载

下载地址&#xff1a;https://cn.ubuntu.com/download 下载版本&#xff1a;ubuntu-20.04.6-desktop-amd64.iso

OpenHarmony实战开发-如何实现进入页面,点击动画卡片,动画播放并且文本发生变化。

介绍 Lottie是一个适用于OpenHarmony的动画库&#xff0c;它可以解析Adobe After Effects软件通过Bodymovin插件导出的json格式的动画&#xff0c;并在移动设备上进行本地渲染&#xff0c; 可以在各种屏幕尺寸和分辨率上呈现&#xff0c;并且支持动画的交互性&#xff0c;通过…

C++stack,queue,priority_queue容器(个人笔记)

C栈队列优先级队列 1.熟悉stack接口以及使用1.1stack的接口1.2stack的模拟实现1.3stack的一些笔试题 2.熟悉queue接口以及使用2.1queue的接口2.2queue的模拟实现2.3queue的笔试题 3.熟悉priority_queue的接口以及使用&#xff08;底层堆&#xff09;3.1priority_queue的接口3.2…

spdlog C++日志管理 安装和下载

下载地址 https://github.com/gabime/spdlog?tabreadme-ov-file 使用git拉取代码 按照操作进行编译 点击spdlog.sln&#xff0c;用vs2019打开&#xff0c;进行编译debug x64 每项都编译一下&#xff0c;会生成安装包 安装包下载路径 https://download.csdn.net/download…

【AI学习中常见专业英文缩写词的解释】

前言&#xff1a; 为了看着不无聊&#xff0c;文中插入了一些AI生成的狗图片 AI(Artificail Intelligence)人工智能&#xff1a; 让机器模拟和展示人类智能的技术。 GAI(Generative Artificail Intelligence)生成式人工智能: 利用复杂的算法、模型和规则&#xff0c;从大规…

mysql数据库表的数据显示到前端tableView

首先我们在ui视图设计中引入TableView, 定义一个model QSqlQueryModel *modelnew QSqlQueryModel(ui->tableView);model->setQuery(query);//将查询结果绑定到模型上ui->tableView->setModel(model); 将tableView内容设置成model然后就可以出现数据库的数据。示…

2.8 构建gradle环境

构建gradle环境 目录一、安装Java Development Kit (JDK)二、下载Gradle三、解压Gradle四、配置环境变量五、验证安装六、gradle构建java项目七、eclipse配置gradle 目录 一、安装Java Development Kit (JDK) Gradle是基于Java开发的&#xff0c;所以首先需要安装JDK。你可以从…

春秋云境:CVE-2022-32991[漏洞复现]

从CVE官网查询该漏洞相关信息 该漏洞是由于welcome.php中的eid参数包含了SQL注入漏洞 则我们的目标就在于寻找welcome.php地址以及相关的可注入eid参数 开启靶机 先在页面正常注册、登录一个账号。密码随便填 进入了home目录&#xff0c;这里有三个话题可以选择开启 随便选…

【服务器部署篇】Linux下Nginx的安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…

【MySQL】20. 使用C语言链接

mysql connect mysql的基础&#xff0c;我们之前已经学过&#xff0c;后面我们只关心使用 要使用C语言连接mysql&#xff0c;需要使用mysql官网提供的库&#xff0c;大家可以去官网下载 我们使用C接口库来进行连接 要正确使用&#xff0c;我们需要做一些准备工作&#xff1a; …

从零构建生产级 AI 应用 ChatWithPDF

前言 目前 AIGC 的浪潮很火&#xff0c;不管你是什么方向的程序员&#xff0c;都可以通过大模型去构建自己的 App&#xff0c;但是搜索资料学习的时候发现&#xff1a; 目前构建 AI 应用的中文资源比较少&#xff0c;大多数都是英文的。教程大多是 demo 级别&#xff0c;没有…

claude3会员版怎么在国内充值

由于国内尚未正式开放注册&#xff0c;许多用户可能感到有些不便。但在这个时代&#xff0c;如果没有几个得心应手的AI工具链接&#xff0c;似乎都与时代脱节了。今天推荐一个非常实用的Claude3镜像站点&#xff1a; https://hiclaude3.cn 这个站点不仅拥有简洁明了的对话操作…