稀土掘金技术社区 2024年11月20日
重磅!本地使用langchain&02_DocQA报错 | 豆包MarsCode AI刷题
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文详细介绍了使用LangChain框架调用火山引擎和智谱AI大模型的实战经验,包括环境配置、代码示例和一些常见问题的解决方法。文章首先讲解了LangChain环境的搭建,包括Python版本选择、LangChain及相关依赖库的安装。随后,分别提供了调用智谱AI的GLM-4模型和火山引擎Doubao-embedding模型的代码示例,并对代码版本进行了对比和说明。此外,文章还强调了环境配置的重要性,并建议读者遇到问题时先尝试理解报错信息,再查阅相关文档或寻求AI帮助。

🤔 **LangChain环境配置:** 文章详细介绍了LangChain环境的搭建过程,包括Python版本选择(Python3.9)、LangChain库的安装(使用conda安装以确保最新版本)、以及相关依赖库的安装(如langchain-openai、langchain-community等)。

🤖 **智谱AI GLM-4模型调用:** 提供了使用LangChain调用智谱AI的GLM-4模型的代码示例,包括API密钥配置、提示词模板的使用以及LLMChain的构建等,并简化了智谱官方提供的模板,使其更易于理解和使用。

🌋 **火山引擎Doubao-embedding模型调用:** 给出了两种调用火山引擎Doubao-embedding模型的代码示例,并解释了版本1由于调用方法弃用而产生的报警,但强调对执行结果没有影响。同时,文章也提示了需要在环境变量中配置ARK_API_KEY和LLM_MODELEND。

📚 **环境配置的重要性:** 文章多次强调环境配置的重要性,包括库的安装、版本、依赖项等,并建议遇到问题时先理解报错信息,再参考官方文档或使用AI进行解决。

⚠️ **错误排查建议:** 文章指出代码报错信息中通常包含关键信息,建议读者先尝试理解报错信息并自行解决,再寻求帮助。同时提醒读者,AI并非万能,一些问题仍然需要依靠自身经验和能力解决。

原创 阿瓦达啃遍大瓜 2024-11-20 09:22 重庆

点击关注公众号,“技术干货” 及时达!

点击关注公众号,“技术干货” 及时达!



直接运行该文件,大概率会出现如下报错。查看报错信息的最后一行,发现“ArkNotFoundError”,

再查看Traceback的下一行,发现在代码的77行出现问题。根据该代码块的79、80行,发现使用了embedding模型,可是我们之前并没有配置。

打开火山方舟,新建推理接入点,选择Doubao-embedding(不要设访问限制)。

查看该模型的API调用方法,并打开.cloudiderc文件,将模型端点加入

export EMBEDDING_MODELEND="your_modelend_point"

在终端执行source ~/.cloudiderc,再次运行02_DocQA.py即可。点击网络服务进入网址或直接在右侧的Web预览中进行问答。

【注意】上一篇提到我的langchain出问题了,后来发现是我给python文件名也起的langchain,大家不要犯类似的错误。解决了这个不算bug的bug,终于可以写代码了?当然不是,下面要解决其他bug!

1. 环境配置

我的原先环境还是有问题,把包都卸载重装了还是不管用,使用pip install下载的langchain等包都不是最新版,老是各种bug,一怒之下,我重新创建并且配置了一个新环境

(大家可以按照我的步骤走一遍,然后有精力的话在自己的旧环境里面再试一遍)

conda create --name bytedance python=3.9conda activate bytedance

不创建新环境的,要在原环境中,更新python版本,并更新其他库(如果事先安装好了langchain 0.2版本以及其他依赖项,这个更新貌似没用, 不过可以尝试),然后查看版本是否都更新了

conda install python=3.9conda update --allconda list
conda install conda-forge::langchain

【注意】由于pip安装可能不是最新版本,所以要用conda官网方法安装,进入anoconda官网,库的下载命令都可以从这里查看https://anaconda.org/

点击这里,进入安装说明(一般选择下载次数最多的,也基本是最新/最稳定的版本)

复制这个命令到anoconda prompt执行

conda install conda-forge::langchain-openaiconda install conda-forge::langchain-community

2. 代码环节

目录指引:

    调用智谱大模型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_KEYLLM_MODELEND,具体可以参考我上一篇文章。话不多说,直接上代码,这里用了两个版本的代码,大家可以对照掘金小册子和练中学之前的内容,自己试着解读一下代码

import 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)

这个版本执行时会报警,是因为调用方法的版本面临弃用,但是对执行结果没有影响

import 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要是都能完美解决,那我真白写了?我是不是人啊?我到底是不是人啊?!!

点击关注公众号,“技术干货” 及时达!


阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LangChain 火山引擎 智谱AI 大模型 环境配置
相关文章