LangChain 系列 -02. LLM 基础
今天讲解 LangChain 中最基础的 LLM 部分。下面的示例代码是通过 Jupyter Notebook 编写和运行的。
环境配置:OpenAI API Key
在本地,或者其他可以访问环境变量的云端环境可以使用这种方法。可以直接修改整个系统的环境变量,也可以通过.env 文件来管理。后者更好,影响可控。需要 dotenv 这个包来读取 key。
然后使用打印函数检查一下对应的 key 是否存在。
在 Kaggle 等平台提供的 Notebook 中,是通过平台提供的 Secrets 功能来设置和获取 key,参考相应的文档即可。
LLM: OpenAI
最基础,也是最重要的大语言模型(LLM)是 OpenAI 的 LLM。首先安装 LangChain 和 OpenAI 的 Python 包。
跟 OpenAI 的大语言模型 Say Hi 吧
重要的参数
模型名称
Models: https://platform.openai.com/docs/models
包括:
GPT-4
GPT-3.5: 现在可用、主要讨论的模型
DALL·E
Whisper
Embeddings
Moderation
GPT-3
其中 GPT-3.5 是我们主要讨论的模型类型,其下包含的具体模型包括下面这些。因为 gpt-3.5-turbo 的成本是 text-davinci-003 的 10%,因此是现在用得非常多的模型,也是支撑 ChatGPT 的模型。
不过 OpenAI 包默认的模型是 text-davinci-003
可以指定为 gpt-3.5-turbo
Temperature:温度
OpenAI 的 Completion 接口参数
其中
temperature number Optional Defaults to 1.
What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.
We generally recommend altering this or top_p but not both.
用温度来控制输出结果的确定性:温度越高,越不确定;温度越低,越确定。
默认温度是 0.7,一个比较平衡的数值
增大一点,设为较热的 1,跟 LLM 说 5 次“Hi, this a good day!”,它每次的回答都不相同:
把温度设为冷冷的 0,5 次回答有 4 次都一模一样,确定性非常好:
把温度调高到燥热的 2,它已经开始胡言乱语,如醉酒一般:
不同的“温度”,差别好大!你想要怎样的 LLM?是太阳神☀️阿波罗的清明,还是酒神🍻狄奥尼索斯的狂放?总有一个“温度”适合你。
更强大的生成函数: generate
上面的例子,无论是 llm('Hi')(其调用的是 OpenAI 类的__call()__函数)还是 llm.predict('Hi, this a good day!'),其背后调用的都是 generate()函数。真实的调用关系是:predict() -> __call()__ -> generate().
见 LangChain 的源代码:https://github.com/hwchase17/langchain/blob/master/langchain/llms/base.py#LL301C16-L301C20
generate()函数允许传入一个 prompt 的 list,返回一个 LLMResult 的 list:
上面的代码是让 LLM 将 3 个笑话,作 3 首诗,得到 6 个结果,具体如下:
还返回了 llm_output,包含输入和输出的 token 数量:
还可以通过 get_num_tokens()函数评估输入 prompt 的 token 数量(需要安装 tiktoken 包)
中文真是费 token!
【未完待续】
版权声明: 本文为 InfoQ 作者【无人之路】的原创文章。
原文链接:【http://xie.infoq.cn/article/f00b3340c13a2ea4e88ff8cd7】。文章转载请联系作者。
评论