LangChain与大模型的学习ing

这篇具有很好参考价值的文章主要介绍了LangChain与大模型的学习ing。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、问题记录

1、库的版本问题

openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/completions (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)')))

解决办法

降低urllib3的版本 <= 1.25.11

pip install urllib3==1.25.11

2、调用限流问题

待补充错误提示

调用有时会失败,除了网络原因,还有本身调用的频率问题,免费的openai调用的次数在每分钟内是有上限的,当然,付费的肯定也有,如果有必要,可以发邮件申请提高上线。

当OpenAI调用频次受限时,可以考虑以下几种处理方式:

  1. 优化调用方式:减少调用OpenAI的频次或者减少对API的请求次数,利用缓存等方式进行数据处理和储存,降低对OpenAI的依赖。
  2. 升级API版本:如果你的OpenAI API版本太老,可以考虑升级到较新的版本。新版本可能具有更高的调用频次限制。
  3. 购买更多资源:考虑购买更多的资源来增加OpenAI调用频次,可以联系OpenAI官方咨询相关服务。
  4. 尝试其他解决方案:如果以上三种方法都不可行,可以尝试其他的自然语言处理或人工智能相关的开源工具,如TensorFlow,PyTorch,NLTK等。

二、实例记录

1、公司名生成

# 来源于LangChain中文网
#-*- coding:utf-8 -*-
# 实例1:构建一个基于公司产品生成公司名称的服务
import os
os.environ["OPENAI_API_KEY"] = "……"
from langchain.llms import OpenAI

llm = OpenAI(temperature=0.9)
text = "What would be a good company name for a company that makes colorful socks?"
print(llm(text))

# 输出:Rainbow Rascals Socks.

我的第一个调用实例,感觉还是很神奇的

“temperature” : OpenAI的API有效载荷中,"temperature"选项是一个控制语言模型输出的随机性或创造性的参数。当使用语言模型生成文本时,它通常会输出根据输入和先前训练数据确定为最可能的单词或词序列。然而,增加输出的随机性可以帮助模型创建更具创意和有趣的输出。"temperature"选项实际上控制着随机性的程度。将温度设置为较低的值将导致输出更可预测和重复,而较高的温度会导致更多种类和不可预测的输出。例如,将温度设置为0.5将导致较保守的输出,而温度为1将创建更富创意和自发的输出。需要注意的是,理想的温度值将取决于具体的任务和上下文,因此可能需要一些实验来找到适合您需要的正确值。

2、提示模板的使用

# 实例2:提示模板的使用
prompt = PromptTemplate(
    input_variables=["product"],
    template="What is a good name for a company that makes {product}?",
)
print(prompt.format(product="colorful socks"))

# 输出:What is a good name for a company that makes colorful socks?

3、LLM Chain

# 实例3:在多步骤的工作流中组合 LLM 和提示
import os
os.environ["OPENAI_API_KEY"] = "……"
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

llm = OpenAI(temperature=0.9)

prompt = PromptTemplate(
    input_variables=["product"],
    template="What is a good name for a company that makes {product}?",
)

chain = LLMChain(llm=llm, prompt=prompt)

print(chain.run("colorful socks"))

# 输出:Sock Pop!

4、LLMMemory

实例4:带记忆的多轮会话

import os
os.environ["OPENAI_API_KEY"] = "……"

from langchain import OpenAI, ConversationChain
llm = OpenAI(temperature=0)
conversation = ConversationChain(llm=llm, verbose=True)#verbose=True 这样我们就可以看到提示符

HumanSent=""

while HumanSent!= "q":
    HumanSent = input("input:")
    output = conversation.predict(input=HumanSent)
    print(output)

默认情况下, ConversationChain 有一个简单的内存类型,它记住所有以前的输入/输出,并将它们添加到传递的上下文中。

5、聊天语言API

import os
os.environ["OPENAI_API_KEY"] = "……"

from langchain.chat_models import ChatOpenAI
from langchain.schema import (
    AIMessage,
    HumanMessage,
    SystemMessage
)
chat = ChatOpenAI(temperature=0)

batch_messages = [
    [
        SystemMessage(content="You are a helpful assistant that translates English to Chinese."),
        HumanMessage(content="Translate this sentence from English to Chinese. I love programming.")
    ],
    [
        SystemMessage(content="You are a helpful assistant that translates English to Chinese."),
        HumanMessage(content="Translate this sentence from English to Chinese. I love artificial intelligence.")
    ],
]
result = chat.generate(batch_messages)
 
print(result)
result.llm_output['token_usage']

'''
generations=[
    [
        ChatGeneration(
            text='我喜欢编程。', 
            generation_info={'finish_reason': 'stop'}, 
            message=AIMessage(content='我喜欢编程。', additional_kwargs={}, example=False)
            )
    ],
    [
        ChatGeneration(
            text='我喜欢人工智能。',
            generation_info={'finish_reason': 'stop'},
            message=AIMessage(content='我喜欢人工智能。', additional_kwargs={}, example=False)
            )
    ]
    ]
llm_output={
    'token_usage': {'prompt_tokens': 69, 'completion_tokens': 19, 'total_tokens': 88},
    'model_name': 'gpt-3.5-turbo'
    } 
run=[
    RunInfo(run_id=UUID('5a2161dd-d623-4d0c-8c0a-0c95df966ca1')),
    RunInfo(run_id=UUID('e42fad23-306a-437f-868c-7e5783bedc4b'))]
'''

6、Agent的使用


import os
os.environ["OPENAI_API_KEY"] = "……"
os.environ["SERPAPI_API_KEY"] = "……"

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI
 
# First, let's load the language model we're going to use to control the agent.
llm = OpenAI(temperature=0)

# Next, let's load some tools to use. Note that the `llm-math` tool uses an LLM, so we need to pass that in.
tools = load_tools(["serpapi", "llm-math"], llm=llm)

# Finally, let's initialize an agent with the tools, the language model, and the type of agent we want to use.
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

# Now let's test it out!
agent.run("What was the high temperature in SF yesterday in Fahrenheit? What is that number raised to the .023 power?")

'''
>[1m> Entering new AgentExecutor chain...>[0m
>[32;1m>[1;3m I need to find the temperature first, then use the calculator to raise it to the .023 power.
Action: Search
Action Input: "High temperature in SF yesterday">[0m
Observation: >[36;1m>[1;3mSan Francisco Temperature Yesterday. Maximum temperature yesterday: 77 °F (at 12:56 pm) Minimum temperature yesterday: 58 °F (at 3:56 am)>[0m
Thought:>[32;1m>[1;3m I now need to use the calculator to raise 77 to the .023 power
Action: Calculator
Action Input: 77^.023>[0m
Observation: >[33;1m>[1;3mAnswer: 1.1050687217917479>[0m
Thought:>[32;1m>[1;3m I now know the final answer
Final Answer: 1.1050687217917479>[0m

>[1m> Finished chain.>[0m
'''

这里唯一需要注意的就是要注册一个 SerpAPI,非常简单,找到官网,几分钟就可以注册完成,然后复制API即可

SerpAPI是一个谷歌搜索结果API工具,可以通过API获取谷歌搜索结果,包括自然搜索结果、广告、新闻、图片等。使用SerpAPI可以帮助开发人员、市场营销人员、数据分析人员等获取搜索引擎结果,以进行分析和决策。

注册SerpAPI需要先访问官方网站https://serpapi.com/,进入注册页面,点击"TRY SERP API FOR FREE"按钮,进入注册流程。用户需要填写邮箱地址、用户名和密码,并同意服务条款和隐私政策。注册成功后,用户需要验证邮箱并选择API使用计划。SerpAPI提供多种计划,包括免费计划、标准计划、高级计划和企业计划,不同计划的费用和API使用次数不同。用户可以根据自身需求选择计划,并进行付款。付款完成后,用户可以在个人控制台中获取API密钥,开始使用SerpAPI。

7、具有聊天模型的代理


import os
os.environ["OPENAI_API_KEY"] = "……"
os.environ["SERPAPI_API_KEY"] = "……"

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.chat_models import ChatOpenAI
from langchain.llms import OpenAI
 
# First, let's load the language model we're going to use to control the agent.
chat = ChatOpenAI(temperature=0)
 
# Next, let's load some tools to use. Note that the `llm-math` tool uses an LLM, so we need to pass that in.
llm = OpenAI(temperature=0)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
 
# Finally, let's initialize an agent with the tools, the language model, and the type of agent we want to use.
agent = initialize_agent(tools, chat, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
 
# Now let's test it out!
agent.run("钱学森的年龄乘以3是多少?")
agent.run("钱学森的夫人是谁?她的年龄乘以3是多少?")

'''

>[1m> Entering new AgentExecutor chain...>[0m
>[32;1m>[1;3mQuestion: What is the result of multiplying Qian Xuesen's age by 3?
Thought: I can use a calculator to find the answer.
Action:

{
  "action": "Calculator",
  "action_input": "Qian Xuesen's age * 3"
}

>[0m
Observation: >[33;1m>[1;3mAnswer: 348>[0m
Thought:>[32;1m>[1;3mI now know the final answer.
Final Answer: The result of multiplying Qian Xuesen's age by 3 is 348.>[0m

>[1m> Finished chain.>[0m


>[1m> Entering new AgentExecutor chain...>[0m
>[32;1m>[1;3mThought: I need to find out who is the wife of Qian Xuesen and then calculate her age multiplied by 3.

Action:

{
  "action": "Search",
  "action_input": "Qian Xuesen wife"
}
>[0m
Observation: >[36;1m>[1;3mJiang Ying>[0m
Thought:>[32;1m>[1;3mJiang Ying is the wife of Qian Xuesen. Now I need to find her age and multiply it by 3.

Action:

{
  "action": "Search",
  "action_input": "Jiang Ying age"
}

>[0m
Observation: >[36;1m>[1;3m36 years>[0m
Thought:>[32;1m>[1;3mJiang Ying is 36 years old. Now I can calculate her age multiplied by 3.

Action:

{
  "action": "Calculator",
  "action_input": "36 * 3"
}


>[0m
Observation: >[33;1m>[1;3mAnswer: 108>[0m
Thought:>[32;1m>[1;3mJiang Ying's age multiplied by 3 is 108.
Final Answer: 108>[0m

>[1m> Finished chain.>[0m


参考资料

1、LangChain中文网
2、python 关于Caused by SSLError(SSLEOFError(8, ‘EOF occurred in violation of protocol (_ssl.c:1131)‘)文章来源地址https://www.toymoban.com/news/detail-639018.html

到了这里,关于LangChain与大模型的学习ing的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI大模型预先学习笔记二:prompt提问大模型、langchain使用大模型框架、fine tune微调大模型

    1)环境准备 ①安装OpenAI库 附加 安装来源 ②生成API key ③设定本地的环境变量 ④代码的准备工作 ⑤在代码运用prompt(简单提问和返回) 2)交互代码的参数备注 temperature:随机性(从0到2可以调节,回答天马行空变化大可以选2) model:跟什么类型的model互动 role:(定义交互

    2024年01月17日
    浏览(45)
  • 【LangChain学习之旅】—(7) 调用模型:使用OpenAI API还是微调开源Llama2/ChatGLM?

    Reference:LangChain 实战课 之前的内容讲了提示工程的原理以及 LangChain 中的具体使用方式。今天,我们来着重讨论 Model I/O 中的第二个子模块,LLM。 让我们带着下面的问题来开始这一节课的学习。大语言模型,不止 ChatGPT 一种。调用 OpenAI 的 API,当然方便且高效,不过,如果我

    2024年02月01日
    浏览(61)
  • 【AI大模型应用开发】【LangChain系列】5. 实战LangChain的智能体Agents模块

    大家好,我是【同学小张】。持续学习,持续干货输出,关注我,跟我一起学AI大模型技能。 在我前面的MetaGPT系列文章中,已经对智能体有了一个认知,重温一下: 智能体 = LLM+观察+思考+行动+记忆 将大语言模型作为一个推理引擎。给定一个任务,智能体自动生成完成任务所

    2024年03月09日
    浏览(59)
  • Langchain 使用 OpenAI 聊天模型

    本笔记本介绍了如何开始使用 OpenAI 聊天模型。 示例代码, 上面的示例代码假设您的 OpenAI API 密钥已在环境变量中设置。如果您想手动指定 API 密钥和/或组织 ID,请使用以下代码: 如果 openai_organization 参数不适用于您,请将其删除。 您可以通过使用 MessagePromptTemplate 来使用

    2024年02月16日
    浏览(41)
  • 【记录】LangChain|Ollama结合LangChain使用的速通版(包含代码以及切换各种模型的方式)

    官方教程非常长,我看了很认可,但是看完了之后呢就需要一些整理得当的笔记让我自己能更快地找到需求。所以有了这篇文章。【写给自己看的,里面半句废话的解释都没有,如果看不懂的话直接看官方教程再看我的】 我是不打算一开始就用OpenAI的,打算先用一下开源模型

    2024年04月14日
    浏览(34)
  • 【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用

    大家好,我是同学小张,日常分享AI知识和实战案例 欢迎 点赞 + 关注 👏, 持续学习 , 持续干货输出 。 +v: jasper_8017 一起交流💬,一起进步💪。 微信公众号也可搜【同学小张】 🙏 本站文章一览: 当大模型的返回文字非常多时,返回完整的结果会耗费比较长的时间。如果

    2024年04月09日
    浏览(52)
  • 【LLM】Langchain使用[二](模型链)

    场景:一个输入和一个输出 场景:多个输入和输出的时候 结果如下,可以看到根据评论文本,子链1将文本翻译为英语,子链2将英文文本进行总结,子链3得到初始文本的语言,子链4对英文文本进行回复,并且是用初始语言。每个后面的子链可以利用前面链的 outpu_key 变量。

    2024年02月16日
    浏览(41)
  • 大语言模型的开发利器langchain

    最近随着chatgpt的兴起,人工智能和大语言模型又再次进入了人们的视野,不同的是这一次像是来真的,各大公司都在拼命投入,希望能在未来的AI赛道上占有一席之地。因为AI需要大规模的算力,尤其是对于大语言模型来说。大规模的算力就意味着需要大量金钱的投入。那么

    2024年02月11日
    浏览(60)
  • LangChain入门(一)访问LLM模型

    GitHub - liaokongVFX/LangChain-Chinese-Getting-Started-Guide: LangChain 的中文入门教程 LangChain 的中文入门教程. Contribute to liaokongVFX/LangChain-Chinese-Getting-Started-Guide development by creating an account on GitHub. https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide   目录 一、安装langchain 二、langchain依赖

    2024年02月11日
    浏览(50)
  • 用LangChain构建大语言模型应用

    自 ChatGPT 发布以来,大型语言模型 (LLM) 广受欢迎。尽管您可能没有足够的资金和计算资源从头开始训练自己的大语言模型,但您仍然可以使用预训练的大语言模型来构建一些很酷的东西,例如: 可以根据您的数据与外界互动的个人助理 为您的目的定制的聊天机器人 分析或总

    2024年02月06日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包