初识LangChain, 实现豆包api调用!

1,267 阅读5分钟

一·什么是LangChain

作为一种专为开发基于语言模型的应用而设计的框架,通过LangChain,我们不仅可以通过API调用如 ChatGPT、GPT-4、Llama 2 等大型语言模型,还可以实现更高级的功能。

两个特性:数据感知。具有代理性

引例1 情人节玫瑰宣传语

步骤 1.安装包2.获取key

手动实现

    import os
    from langchain_openai import ChatOpenAI
    #from langchain_openai import OpenAI
    #llm = OpenAI(model_name="gpt-3.5-turbo-instruct",max_tokens=200)
    llm = ChatOpenAI(model=os.environ.get("LLM_MODELEND"))

    text = llm.predict("请给我写三句令人印象深刻的告白情话")
    print(text)

注意 OpenAI暂时不开放了,用上面的代码会报404 以后统一的模型初始化格式为 llm = ChatOpenAI(model=os.environ.get("LLM_MODELEND"))

引例2 海报文案生成器

步骤:

  1. 初始化图像字幕生成模型(HuggingFace中的image-caption模型)。
  2. 定义LangChain图像字幕生成工具。
  3. 初始化并运行LangChain Agent(代理),这个Agent是OpenAI的大语言模型,会自动进行分析,调用工具,完成任务。

安装包

pip install --upgrade langchain
pip install transformers
pip install pillow
pip install torch torchvision torchaudio

核心理念: 我们并不是生硬的去设计什么固定的逻辑,而是由语言模型通过理解和推理来决定执行什么操作以及执行的顺序

LangChain本质上就是对各种大模型提供的API的套壳,是为了方便我们使用这些API,搭建起来的一些框架、模块和接口。

二·两种模型实战

text 模型 chat 模型

公共步骤:

1.导包

import os
from openai import OpenAI
from langchain_openai import ChatOpenAI
from volcenginesdkarkruntime import Ark
等等……

2.创建llm以及配置参数

client = OpenAI()

response = client.completions.create(
    model=os.environ.get("LLM_MODELEND"),
    temperature=0.5,
    max_tokens=100,
    prompt="请给我的花店起个名",
)

#可以用OpenAI()  也可以用ChatOpenAI  或者想下面用Ark第三方api
client = Ark(
    base_url="https://ark.cn-beijing.volces.com/api/v3",
)
completion = client.chat.completions.create(
    model="ep-20241103100825-q7tsb",
    messages = [
        {"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
        {"role": "user", "content": "介绍一下《黑神话悟空》"},
    ],
)

response = client.chat.completions.create(
    model=os.environ.get("LLM_MODELEND"),
    messages=[
        {"role": "system", "content": "You are a creative AI."},
        {"role": "user", "content": "请给我的花店起个名"},
    ],
    temperature=0.8,
    max_tokens=600,
)

3.调用输出

text的
print(response.choices[0].text.strip())
chat的
print(response.choices[0].message.content)
用ChatOpenAI的text
response = llm.predict("请给我的花店起个名")
print(response)
用ChatOpenAI的chat
response = chat(messages)
print(response)

## 思考题:怎么在网页控制台连接其他模型(例豆包api)

1.获取api-key console.volcengine.com/ark/region:… 2.获取模型id的地址,示例为Doubao-pro-32k console.volcengine.com/ark/region:… api.png

然后在网页控制台新建一个py文件,运行下面的代码

#export ARK_API_KEY="YOUR_API_KEY"记得用自己的key设置环境变量
from volcenginesdkarkruntime import Ark

client = Ark(
    base_url="https://ark.cn-beijing.volces.com/api/v3",
)

# Non-streaming:
print("----- standard request -----")
completion = client.chat.completions.create(
    model="ep-20241103100825-q7tsb",
    messages = [
        {"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
        {"role": "user", "content": "介绍一下《黑神话悟空》"},
    ],
)
print(completion.choices[0].message.content)

就ok了家人们!

最后总结

学习新的编程框架总是一项充满挑战的任务,尤其是对于刚开始接触复杂概念的初学者来说。LangChain框架,作为一款旨在简化和加速自然语言处理任务的工具,对于我这样的初学者来说,既带来了激动人心的可能性,同时也带来了学习的曲线。

一开始,我对LangChain的了解仅限于它是一个用于构建与自然语言处理相关的应用的框架。它的主要卖点是它能够方便地整合不同的语言模型和工具,以便开发者能够更轻松地创建、测试和部署语言应用。然而,正是这些特性,一开始让我感到有些不知所措。对于刚刚开始学习编程的人来说,理解框架如何操作,以及如何最有效地使用它,都是需要克服的障碍。

我的学习之旅从安装LangChain开始。安装过程本身相对直接,但对于环境配置的要求让我初尝挑战。在理解各种依赖和库如何相互作用的过程中,我逐渐学到了很多关于Python环境管理的知识,这无疑是我编程能力提升的一个加分点。

接下来,我开始试着运行一些基本的示例。LangChain的文档和社区提供了一些示例和教程,这些都极大地帮助了我。通过逐步跟随教程,我开始理解如何调用不同的API来处理语言数据,如何利用预训练的模型来生成文本,以及如何训练自己的模型。每当代码成功运行,我都有一种成就感,这让我更加热衷于深入学习。

然而,随着我尝试构建自己的小项目来测试学习成果时,我遇到了一些问题。比如,理解模型的输入和输出格式,处理错误和异常,以及调试代码。通过这一过程,我学到了很多关于编程思维和问题解决的技巧,也逐渐开始理解LangChain框架的强大之处。

总的来说,作为一个初学者,我对LangChain框架的学习体验是充满挑战但非常有价值的。它不仅提升了我的编程技能,也让我对自然语言处理的潜力和应用有了更深的认识。虽然我还有很多需要学习的地方,但我已经迫不及待地想要继续探索并利用这个框架来实现更多有影响力的项目。对于其他初学者,我建议以耐心和持续的学习态度来面对学习中的挑战,同时积极利用社区资源,这样可以更快地克服初期的难关并开始享受编程带来的乐趣。