在Task1中对LLM有了一些背景和理论上的了解以后, Task2就是让我们可以实操试一下如何以调用API的方式调用各家的LLM base大模型, 在课程中提供的一部分模型, 比如openai、千帆、星火、智谱的大模型等, 各个大模型的API调用稍有不同但是基本上都是需要相应的API key, 设置到.env中后, 再利用dotenv加载. 之后再根据各个大模型的接口, 对模型进行初始化, 在下面贴个图方便记忆.
一、初次使用LLM
质朴的初始化比较简单, 只需要初始化ZhipuAI这个类就可以, 然后我们使用prompt获取返回completion的函数中需要接收prompt参数、model、还有用于调整模型输出是否放飞自我的temprature, 特别我发现了一个反直觉的地方, 不是所有模型的temprature的定义域都是0-1的, 智谱的是(0, 1)开区间, 这里需要注意一下.
以下是我改了一模型和prompt参数的输出
把模型改回默认参数 再看看输出
模型的大小对于生成的响应还是有些联系的
把temprature改小 看看效果
可以看到, 这时候智谱就把自己当作了GPT4(笑哭, 我推测是用GPT4的输出进行训练的, temprature越小就越容易用用于训练的语料来做输出, 输出会更保守)
记录zhipuai的传入参数
二、结构化prompt和结构化输出
可以看到, 加和不加分隔符的结构化prompt区别会对LLM的completions造成比较大的影响, 像下面不使用分隔符时, 模型就会没有按照我们的guidance输出, 甚至这个输出有的时候还会暴露一些训练数据, 例子如下(这个人工智能助手很多LLM都用于训练了 可能看不出来啥, 就记录个大致的意思, 这里temprature调低了)
我们可以通过prompt让模型给我们一些结构化的输出 比如json
还有xml
LLM的few shot的能力也很强
指导LLM发现解决方法(我这里用的是GLM4-plus,模型已经能指出错误和并改正错误了, LLM的进步还是很快的呀)
重新设计prompt后
三、大模型的幻觉
简单来说就是大模型毕竟是个生成模型, 会出现一些错误, 生成一些错误的知识或者直接给你虚构知识, 下面我把temprature调大展示一下
结果可以发现arxiv号和文章名称根本对不上, 笑死, 这个幻觉问题是各家大模型都在极力解决的问题(我这里特意看幻觉把temperatrue调整到了0.99, 实际使用时不会这么离谱的)