国内大语言模型的相对比较:ChatGLM2-6B、BAICHUAN2-7B、通义千问-6B、ChatGPT3.5

一、 前言

国产大模型有很多,比如文心一言、通义千问、星火、MOSS 和 ChatGLM 等等,但现在明确可以部署在本地并且开放 api 的只有 MOOS 和 ChatGLM。MOOS 由于需要的 GPU 显存过大(不量化的情况下需要80GB,多轮对话还是会爆显存),但 ChatGLM 可以在笔记本电脑部署(int4版本只需要6GB显存即可)。所以本文采用ChatGLM 与 ChatGPT 做对比,看看国产模型的优点和缺点。

会在选取本教程的各个方面进行对比,最后会总结 ChatGPT 与 ChatGLM 各自的优缺点。

二、ChatGLM 环境配置

ChatGLM 官网(现可申请内测)

ChatGLM 的环境配置可以参考 DataWhale 的这篇文章:ChatGLM-6B 本地部署指南!

部署好了之后,运行项目中的api.py文件即可。下面是使用 ChatGLM 的 api 封装的类似 ChatGPT 一样的get_completion函数,只需要传进去 ChatGPT 参数即可。

import requests
import json

如果你没有 openai 的 key 的话,部署好 chatglm-6B 之后,使用此函数也可以学完整个课程,加油~

def get_completion(prompt):
    headers = {'Content-Type': 'application/json'}
    data = {"prompt": prompt, "history": []}
    response = requests.post(url='http://127.0.0.1:8000', headers=headers, data=json.dumps(data))
    return response.json()['response']

get_completion("你好")

输出结果

你好 !我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。

三、ChatGPT 环境配置

本教程使用 OpenAI 所开放的 ChatGPT API,因此你需要首先拥有一个 ChatGPT 的 API_KEY(也可以直接访问官方网址在线测试),然后需要安装 openai 的第三方库。

首先需要安装所需第三方库:

openai

pip install openai

dotenv

pip install -U python-dotenv

导入系统环境变量

# 将自己的 API-KEY 导入系统环境变量
!export OPENAI_API_KEY='api-key'

import openai
import os
from dotenv import load_dotenv, find_dotenv
# 导入第三方库

_ = load_dotenv(find_dotenv())
# 读取系统中的环境变量

openai.api_key  = os.getenv('OPENAI_API_KEY')
# 设置 API_KEY

封装一个函数

def get_completion_gpt(prompt, model="gpt-3.5-turbo", temperature=0): 
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=temperature, # 值越低则输出文本随机性越低
    )
    return response.choices[0].message["content"]

get_completion_gpt('你好')

输出结果

你好!有什么我可以帮助你的吗?

四、文本理解

1. 有步骤的文本

# 有步骤的文本
text_1 = f"""
泡一杯茶很容易。首先,需要把水烧开。\
在等待期间,拿一个杯子并把茶包放进去。\
一旦水足够热,就把它倒在茶包上。\
等待一会儿,让茶叶浸泡。几分钟后,取出茶包。\
如果你愿意,可以加一些糖或牛奶调味。\
就这样,你可以享受一杯美味的茶了。
"""
prompt = f"""
您将获得由三个引号括起来的文本。\
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:

第一步 - ...
第二步 - …
…
第N步 - …

如果文本中不包含一系列的指令,则直接写“未提供步骤”。"
\"\"\"{text_1}\"\"\"
"""

response = get_completion_glm(prompt)
print(response)

chatglm 的输出结果

第一步: 把水烧开
第二步: 把茶包放入杯子中
第三步: 等待水足够热
第四步: 倒在茶包上
第五步: 等待茶叶浸泡
第六步: 取出茶包
第七步: 如果喜欢,可以加一些糖或牛奶
第八步: 搅拌均匀
第九步: 享用美味的茶

未提供步骤

response = get_completion_gpt(prompt)
print(response)

chatgpt 的输出结果

第一步 - 把水烧开。
第二步 - 拿一个杯子并把茶包放进去。
第三步 - 把热水倒在茶包上。
第四步 - 等待几分钟,让茶叶浸泡。
第五步 - 取出茶包。
第六步 - 如果你愿意,可以加一些糖或牛奶调味。
第七步 - 就这样,你可以享受一杯美味的茶了。

:这里可以看出,提供的文本是有步骤的文本。chatglm 给出了步骤,但在最后说了未提供步骤。但 chatgpt 给出步骤,而且步骤要比 chatglm 的完整,而且回答正确。

2. 无步骤的文本

# 无步骤的文本
text_2 = f"""
今天阳光明媚,鸟儿在歌唱。\
这是一个去公园散步的美好日子。\
鲜花盛开,树枝在微风中轻轻摇曳。\
人们外出享受着这美好的天气,有些人在野餐,有些人在玩游戏或者在草地上放松。\
这是一个完美的日子,可以在户外度过并欣赏大自然的美景。
"""
prompt = f"""
您将获得由三个引号括起来的文本。\
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:

第一步 - ...
第二步 - …
…
第N步 - …

如果文本中不包含一系列的指令,则直接写“未提供步骤”。"
\"\"\"{text_2}\"\"\"
"""

response = get_completion_glm(prompt)
print(response)

chatglm 的输出结果

第一步: 去公园散步
第二步: 欣赏鲜花和树枝
第三步: 感受微风
第四步: 放松身心
第五步: 野餐或玩游戏
第六步: 感受大自然的美丽

未提供步骤。
response = get_completion_gpt(prompt)
print(response)

chatgpt 的输出结果

未提供步骤。

注: 提供的是一个无步骤文本,但 chatglm 回答了一个步骤,在最后说了无步骤,这跟上面的有步骤文本回答几乎一样。chatgpt 则是直接给出未提供步骤的回答。

3. 提供少量示例的文本

prompt = f"""
你的任务是以一致的风格回答问题。

<孩子>: 教我耐心。

<祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始编织。

<孩子>: 教我韧性。
"""

response = get_completion_glm(prompt)
print(response)

chatglm 的输出结果

韧性是一种强大的品质,可以帮助人们在挑战中保持冷静和坚韧。以下是一些培养韧性的方法:
1. 接受挑战并做好准备:韧性需要面对挑战并克服困难。要培养韧性,需要先准备好接受挑战,并采取必要的措施来解决问题。
2. 学会放松:当我们感到紧张和焦虑时,可能会失去韧性。学会放松自己,可以帮助缓解压力和焦虑,从而提高韧性。
3. 培养自我意识:韧性需要了解自己的弱点和优点,并积极改善自己。学会关注自己的情绪和行为,并努力改善自己的韧性。
4. 学习沟通技巧:沟通是影响韧性的重要因素。学习有效的沟通技巧,可以帮助更好地表达自己的意见和想法,同时也可以帮助更好地理解他人的观点。
5. 坚持锻炼和健康饮食:锻炼和健康饮食可以帮助保持身体健康和精神健康,从而提高韧性。
希望这些方法可以帮助培养韧性。
response = get_completion_gpt(prompt)
print(response)

chatgpt 的输出结果

<祖父母>: 韧性就像是一棵树,它需要经历风吹雨打、日晒风干,才能成长得更加坚强。所以,当你遇到挫折和困难时,不要轻易放弃,要坚持下去,相信自己的能力和潜力,最终你会成为一棵茁壮成长的大树。

五、提问回答测试:

1.世界上最大的动物是什么?

2.写一个调用openai api的Python代码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
ChatGLM2是一个基于GPT模型的对话生成模型。该模型的原理是使用了大规模的对话数据进行训练,通过学习对话的语言模式和上下文信息,生成自然流畅的回复。 具体来说,在ChatGLM2中,使用了GPT模型进行对话生成。GPT模型是一种基于Transformer架构的语言模型,它能够通过预训练学习到大量的语言知识和语法规则。在对话生成中,GPT模型能够根据用户的输入和之前的对话历史,预测下一个合理的回复。 为了训练ChatGLM2模型,使用了大规模的对话数据集。这些对话数据包含了真实世界的对话样本,包括了各种领域和主题的对话。通过在这些对话数据上进行预训练,模型能够学习到不同的对话场景和常见的对话模式。 ChatGLM2的优势在于它对于一些词汇和表达的理解更为准确,并且在生成回复时能够更好地保持上下文的连贯性。然而,由于模型的训练过程以及对话数据的限制,有些情况下模型的表现可能一般。 总结起来,ChatGLM2是一个基于GPT模型的对话生成模型,通过训练大规模的对话数据,模型能够生成自然流畅的回复。它在解释和理解词汇以及保持上下文连贯性方面表现较好,但在一些情况下表现一般。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [中文模型的奋起直追:MOSS、baichuan-7B/13B和ChatGLM2-6B的原理、部署与微调](https://blog.csdn.net/v_JULY_v/article/details/131551173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [ChatGLM2 测试与策略分析](https://blog.csdn.net/DeerEyre/article/details/131699128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学术菜鸟小晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值