ChatGLM3:打造更智能、更安全的代码解释器和工具使用体验

ChatGLM3 是由智谱AI训练的第三代大型语言模型,它不仅能理解和生成人类语言,还能执行代码、调用工具,并以 markdown
格式进行响应。为了提高用户体验,同时避免用户输入的注入攻击,ChatGLM3
采用了全新的对话格式。下载智谱清言体验ChatGLM3最新的能力。

GitHub代码仓库:[GitHub - THUDM/ChatGLM3](https://github.com/THUDM/ChatGLM3 "GitHub

  • THUDM/ChatGLM3")

ChatGLM3 对话格式

ChatGLM3 对话的格式由若干对话组成,其中每个对话包含对话头和内容。对话头占完整的一行,格式为 <|role|>{metadata},其中
<|role|> 部分使用 special token 表示,无法从文本形式被 tokenizer 编码以防止注入。metadata
部分采用纯文本表示,为可选内容。

对话格式的角色包括:
- <|system|>:系统信息,设计上可穿插于对话中,但目前规定仅可以出现在开头
- <|user|>:用户,不会连续出现多个来自 <|user|> 的信息
- <|assistant|>:AI 助手,在出现之前必须有一个来自 <|user|> 的信息
- <|observation|>:外部的返回结果,必须在 <|assistant|> 的信息之后

使用场景

多轮对话

在多轮对话中,有且仅有 <|user|><|assistant|><|system|> 三种角色。例如:

<|system|>
You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the
user’s instructions carefully. Respond using markdown.
<|user|>
Hello
<|assistant|>
Hello, I’m ChatGLM3. What can I assist you today?

工具调用

在工具调用场景中,AI 助手可以接收用户的请求,调用相应的工具,并返回查询结果。例如:

<|system|>
Answer the following questions as best as you can. You have access to the
following tools:
[
{
“name”: “get_current_weather”,
“description”: “Get the current weather in a given location”,
“parameters”: {
“type”: “object”,
“properties”: {
“location”: {
“type”: “string”,
“description”: “The city and state, e.g. San Francisco, CA”,
},
“unit”: {“type”: “string”},
},
“required”: [“location”],
},
}
]
<|user|>
查查巴黎的天气怎么样?
<|assistant|>
我需要调用天气预报工具来获取巴黎的天气信息
<|assistant|>get_current_weather

tool_call(location="巴黎", unit="celsius")  

<|observation|>
{“temperature”: 12}
<|assistant|>
根据查询结果,巴黎现在的气温为 12 摄氏度。

代码执行

<|system|>

你是一位智能AI助手,你叫ChatGLM3,你连接着一台电脑,但请注意不能联网。在使用Python解决任务时,你可以运行代码并得到结果,如果运行结果有错误,你需要尽可能对代码进行改进。你可以处理用户上传到电脑上的文件,文件默认存储路径是/mnt/data/。
<|user|>
#File: /mnt/data/metadata.jsonl
#Size: 35380
#File uploaded
文件中是否存在缺失值或异常值?
<|assistant|>
首先,我将读取您提供的文件,并查看其内容以确定是否存在缺失值或异常值。

我们从加载文件开始:
<|assistant|>interpreter

import json

# Load the uploaded file  
data = []  
with open("/mnt/data/metadata.jsonl", 'r') as file:  
for line in file:  
data.append(json.loads(line))

# Display the first few records to get a sense of the data  
data[:5]  

<|observation|>

[{'file_name': 'aceinthehole.png',  
'name': 'Ace in the Hole',  
'type': 'survivor',  
'description': 'Lady Luck always seems to be throwing something good your
way.'},  
{'file_name': 'adrenaline.png',  
'name': 'Adrenaline',  
'type': 'survivor',  
'description': 'You are fuelled by unexpected energy when on the verge of
escape.'},  
{'file_name': 'aftercare.png',  
'name': 'Aftercare',  
'type': 'survivor',  
'description': "Unlocks potential in one's aura reading ability."},  
{'file_name': 'agitation.png',  
'name': 'Agitation',  
'type': 'killer',  
'description': 'You get excited in anticipation of hooking your prey.'},  
{'file_name': 'alert.png',  
'name': 'Alert',  
'type': 'survivor',  
'description': 'Your acute senses are on high alert.'}]  

<|assistant|>
该文件看起来包含有关某些条目的元数据,每个条目有以下字段:

- file_name: 文件名称
- name: 名称
- type: 类型(例如 “survivor” 或 “killer”)
- description: 描述

接下来,我将检查这些字段是否存在缺失值。
<|assistant|>interpreter

# Check for missing values in each column  
missing_values = {key: sum(1 for item in data if key not in item) for key
in data[0].keys()}

missing_values  

<|observation|>

{'file_name': 0, 'name': 0, 'type': 0, 'description': 0}  

<|assistant|>
每个字段都没有缺失值。这意味着每个条目都完整。

接下来,我们可以检查是否存在任何潜在的异常值。这通常需要更深入的分析和对数据的了解,但我可以从一些基本的统计和分布开始进行检查。为了这样做,我们可以查看“type”字段的值分布,看看是否有任何意外的类别。
<|assistant|>interpreter

# Check the distribution of values in the 'type' column  
type_distribution = {key: sum(1 for item in data if item['type'] == key)
for key in set(item['type'] for item in data)}

type_distribution  

<|observation|>

{'survivor': 116, 'killer': 103}  

<|assistant|>
“type”字段有两个值:“survivor”和“killer”。其中,“survivor”有116个条目,而“killer”有103个条目。

从这个初步的检查中,我们没有发现任何明显的异常值。

如果您有任何特定的标准或其他字段需要检查,我可以为您提供更详细的分析。您还希望我检查什么呢?
<|user|>
帮我画一个爱心
<|assistant|>interpreter

import numpy as np  
import matplotlib.pyplot as plt

# 爱心形状的参数方程  
def heart(t):  
x = 16 * np.sin(t) ** 3  
y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)  
return x, y

t = np.linspace(0, 2 * np.pi, 1000)  
x, y = heart(t)

plt.figure(figsize=(6, 6))  
plt.plot(x, y, color='red')  
plt.axis('equal')  
plt.axis('off')  
plt.show()  

<|observation|>

[Image]  

<|assistant|>
这是一个爱心形状。我使用了参数方程来描述这个形状,并使用matplotlib进行了绘制。如果您有任何其他需求或问题,请随时告诉我。
<|user|> # End

ChatGLM3 的对话格式设计使得它能够以更清晰、更安全的方式进行多轮对话、工具调用和代码执行。无论是查看天气、分析数据,还是创建图形,ChatGLM3
都能提供高效、准确的帮助。

总的来说,ChatGLM3 是一款强大的 AI 助手,它的出现将为我们的生活和工作带来更多可能性。

学习计划安排


我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!

如果你对网络安全入门感兴趣,那么你需要的话可以

点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值