重磅!本地使用langchain&02_DocQA报错 | 豆包MarsCode AI刷题
点击关注公众号,“技术干货”及时达!
关于项目空间02_DocQA.py报错的解决方法,以及本地使用langchain调用大模型的方法一、 02_DocQA.py报错的解决方法直接运行该文件,大概率会出现如下报错。查看报错信息的最后一行,发现“ArkNotFoundError”,
再查看Traceback的下一行,发现在代码的77行出现问题。根据该代码块的79、80行,发现使用了embedding模型,可是我们之前并没有配置。
打开火山方舟,新建推理接入点,选择Doubao-embedding(不要设访问限制)。
查看该模型的API调用方法,并打开.cloudiderc文件,将模型端点加入
export EMBEDDING_MODELEND="your_modelend_point"在终端执行source ~/.cloudiderc,再次运行02_DocQA.py即可。点击网络服务进入网址或直接在右侧的Web预览中进行问答。
二、 本地使用langchain调用大模型(本例使用了智谱大模型glm-4和火山引擎大模型)【注意】上一篇提到我的langchain出问题了,后来发现是我给python文件名也起的langchain,大家不要犯类似的错误。解决了这个不算bug的bug,终于可以写代码了?当然不是,下面要解决其他bug!
1. 环境配置我的原先环境还是有问题,把包都卸载重装了还是不管用,使用pip install下载的langchain等包都不是最新版,老是各种bug,一怒之下,我重新创建并且配置了一个新环境
(大家可以按照我的步骤走一遍,然后有精力的话在自己的旧环境里面再试一遍)
1. 最新版本的langchain 0.3将不再支持python3.8了,这次使用的是3.9版本的python。conda create --name bytedance python=3.9conda activate bytedance不创建新环境的,要在原环境中,更新python版本,并更新其他库(如果事先安装好了langchain 0.2版本以及其他依赖项,这个更新貌似没用, 不过可以尝试),然后查看版本是否都更新了
conda install python=3.9conda update --allconda list2. 安装langchainconda install conda-forge::langchain【注意】由于pip安装可能不是最新版本,所以要用conda官网方法安装,进入anoconda官网,库的下载命令都可以从这里查看https://anaconda.org/
点击这里,进入安装说明(一般选择下载次数最多的,也基本是最新/最稳定的版本)
复制这个命令到anoconda prompt执行
3. 安装依赖项conda install conda-forge::langchain-openaiconda install conda-forge::langchain-community2. 代码环节 目录指引:
调用智谱大模型glm-4(免费)调用火山大模型如果按照我的流程新建环境一步步走下来执行下面的代码会很顺利,其余的代码执行过程中报错,可能是一些包的安装或者版本问题,说到底还是环境的问题。
1. 调用智谱大模型glm-4(免费)我由于环境问题,尝试了各种方法,后来经历了一番波折,终于在使用openai测试的时候环境没问题了,但是由于openai并不在国内我无法连接,所以我先行尝试了其他的开源大模型,然后才使用火山大模型。下面是智谱大模型官网给出的langchain调用模板。
【注意】需要自己去智谱官网注册账号,并把api_key配置到自己的环境变量中
import osfrom langchain_openai import ChatOpenAIfrom langchain.prompts import ( ChatPromptTemplate, MessagesPlaceholder, SystemMessagePromptTemplate, HumanMessagePromptTemplate,)from langchain.chains import LLMChainfrom langchain.memory import ConversationBufferMemory
api_key = os.environ.get("ZHIPUAI_API_KEY")
llm = ChatOpenAI( model="glm-4", max_tokens=100, openai_api_key=api_key, openai_api_base="https://open.bigmodel.cn/api/paas/v4/",)
prompt = ChatPromptTemplate( messages=[ SystemMessagePromptTemplate.from_template( "你是一个智能机器人,可以回答人类许多问题。" ), MessagesPlaceholder(variable_name="chat_history"), HumanMessagePromptTemplate.from_template("{question}") ])
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)chat = LLMChain( llm=llm, prompt=prompt, verbose=True, memory=memory)response = chat.invoke({"question": "请给我的花店起个名字。"})print(response['text'])
智谱给出的是有提示词的模板,看着有一点复杂,于是我觉得是不是可以更简单一点,然后就产生了下面的简单版代码。
import osfrom langchain_openai import ChatOpenAI
# 从环境变量中获取API密钥和模型端点api_key = os.environ.get("ZHIPUAI_API_KEY")
# 实例化ChatOpenAI对象llm = ChatOpenAI(openai_api_key=api_key, openai_api_base="https://open.bigmodel.cn/api/paas/v4/", model="glm-4", temperature=0.8, max_tokens=60)
# 通过对象调用模型response = llm.predict("请给我的花店起个名字")print(response)
大家或许更关心火山大模型的调用,代码如出一辙。
2. 调用火山大模型之前我们在环境变量中已经分别配置了ARK_API_KEY和LLM_MODELEND,具体可以参考我上一篇文章。话不多说,直接上代码,这里用了两个版本的代码,大家可以对照掘金小册子和练中学之前的内容,自己试着解读一下代码
版本1import osfrom langchain_openai import ChatOpenAI
# 从环境变量中获取API密钥和模型端点api_key = os.environ.get("ARK_API_KEY")model = os.environ.get("LLM_MODELEND")
# 实例化ChatOpenAI对象llm = ChatOpenAI(openai_api_key=api_key, openai_api_base="https://ark.cn-beijing.volces.com/api/v3", model=model, temperature=0.8, max_tokens=60)
# 通过对象调用模型response = llm.predict("请给我的花店起个名字")print(response)
这个版本执行时会报警,是因为调用方法的版本面临弃用,但是对执行结果没有影响
版本2import osfrom langchain_openai import ChatOpenAIfrom langchain.schema import ( HumanMessage, SystemMessage)
# 从环境变量中获取API密钥和模型名称api_key = os.environ.get("ARK_API_KEY")model = os.environ.get("LLM_MODELEND")
# 初始化ChatOpenAI对象llm = ChatOpenAI(openai_api_key=api_key, openai_api_base="https://ark.cn-beijing.volces.com/api/v3", model=model, temperature=0.8, max_tokens=60)
messages = [ SystemMessage(content="你是一个很棒的智能助手"), HumanMessage(content="请给我的花店起个名")]response = llm.invoke(messages)
# 以下几行可直接替换20-24行代码# response = llm.invoke([# ("system", "你是一个智能机器人,可以回答人类许多问题。"),# ("human", "请给我的花店起个名字。")# ])
print(response.content)
三、总结与提示环境的配置至关重要,这里包括库的安装、库的版本、依赖项......很多东西其实需要大家自己去相应的官网查看指引和相关文档,本文除了国内的大模型网站,像langchain、Anoconda、Github这些网站都是英文的,有些网页提供了翻译,大部分是没有的,大家可以先搜索关键词查看相应部分,或者复制到翻译软件中查看中文翻译,实在太别扭不理解的,就可以利用网站上的一些关键信息直接去请教AI了。其实代码报错的内容大家基本都能看得懂,无非就是报错的最后一行、或者Traceback下面第一行,可以先试着去理解并尝试自己解决,不懂的再去查找官方文档或者AI,当然AI最方便,但是有的问题仍然无法解决;conda虚拟环境的问题其实AI只能解决大部分,有时候他最后会给你一个“如果以上方法都不能解决,请尝试重新创建一个环境”最后再说一遍,AI要是都能完美解决,那我真白写了?我是不是人啊?我到底是不是人啊?!!点击关注公众号,“技术干货”及时达!
阅读原文
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。 项目经理在线