听说你把 ChatGPT 当成搜索引擎用了?

未经作者(微信ID:Byte-Flow)允许,禁止转载
文章首发于公众号:字节流动

图片

看到一些读者朋友把 ChatGPT 当成搜索引擎使用了,当然这样使用也没有问题,只是并不能发挥出 ChatGPT 背后大型语言模型(LLM)的优势,似乎有一种在“拿斧头切菜”的感觉。

其实 ChatGPT 正确的使用姿势需要结合着清晰、明确的 Prompt ,那 Prompt 又是什么?

Prompt 翻译为“提示词”,它通常是一段文本或问题,用于引导语言模型生成相应的文本回复或完成某项任务。

通常,当用户输入一个 Prompt 时,ChatGPT 会根据这个 Prompt 生成一段回复文本。

这个回复文本的内容和质量取决于模型的训练数据、模型的结构和参数、以及输入 Prompt 的质量和准确性

一个好的 Prompt 应该能够清晰地表达用户的意图和需求,同时包含足够的上下文信息,以便模型能够生成准确和有意义的回复。

一个好的 Prompt 至少要包含三个要素:

任务: 明确而简洁地陈述 Prompt 要求模型生成的内容;
指令: 模型在生成文本时应遵循的指令;
角色: 模型在生成文本时应扮演的角色。

举个简单的例子:

Prompt1:请写一篇以环保为主题的文章;

Prompt2:你是一名语文教师,请写一篇以环保为主题 800 字左右的文章。

我们可以对比下这两个提示词哪一个更加完整,更能清晰地表达用户的意图和需求?

很明显,Prompt2 包含了上述三个要素:

任务:写文章;
指令:以环保为主题 800 字左右;
角色:语文教师。

除了上述三个要素之外,在设计 Prompt 时,我结合自己的经验总结了下面几点给你参考:

  • 提供足够的上下文:你提出这个问题的背景要尽量交代清楚,比如有一些读者在技术群里提问时完全不交代背景,还期望别人帮他解决问题;

  • 同一个对话中要避免频繁切换角色:同一个对话保持上下文的一致性,比如你突然向一个程序员询问医疗方面的问题,很可能得不到最优的回答;

  • 避免使使用激烈或具有强烈情感色彩的词语:使用激烈言辞的 Prompt 可能导致生成的文本更加情感化、强烈或争议性(官方解释)。

现在我们基于上面的几个要素来设计一个 Prompt , 让 ChatGPT 帮我们阅读一段代码:

你是一名非常有经验的程序员,对各种编程语言都非常熟练。我将提供给你一段代码,你需要在行内为这段代码添加注释,注释使用中文,并在最后解读这段代码,比如具体完成什么任务,思路是什么。如果代码有错误,你需要指出,并且给出改正的意见。回答中有包含代码的部分,请以代码段的格式显示。我的第一段代码如下:

void CoordSystemSample::UpdateMVPMatrix(glm::mat4 &mvpMatrix, int angleX, int angleY, float ratio)
{
    // Ensure angles are within the range [0, 359]
    angleX = angleX % 360;
    angleY = angleY % 360;

    // Convert angles to radians
    float radiansX = static_cast<float>(MATH_PI / 180.0f * angleX);
    float radiansY = static_cast<float>(MATH_PI / 180.0f * angleY);

    // Create a perspective projection matrix
    glm::mat4 Projection = glm::perspective(45.0f, ratio, 0.1f, 100.f);

    // Define the view matrix using glm::lookAt
    glm::mat4 View = glm::lookAt(
        glm::vec3(0, 0, 4),  // Camera is at (0,0,1), in World Space
        glm::vec3(0, 0, 0),  // and looks at the origin
        glm::vec3(0, 1, 0)   // Head is up (set to 0,-1,0 to look upside-down)
    );

    // Create a model matrix with scaling, rotation, and translation
    glm::mat4 Model = glm::mat4(1.0f);
    Model = glm::scale(Model, glm::vec3(m_ScaleX, m_ScaleY, 1.0f));
    Model = glm::rotate(Model, radiansX, glm::vec3(1.0f, 0.0f, 0.0f));
    Model = glm::rotate(Model, radiansY, glm::vec3(0.0f, 1.0f, 0.0f));
    Model = glm::translate(Model, glm::vec3(0.0f, 0.0f, 0.0f));

    // Calculate the final MVP matrix by multiplying Projection, View, and Model matrices
    mvpMatrix = Projection * View * Model;
}

ChatGPT 回答:


void CoordSystemSample::UpdateMVPMatrix(glm::mat4 &mvpMatrix, int angleX, int angleY, float ratio)
{
    // 确保角度在 [0, 359] 范围内
    angleX = angleX % 360;
    angleY = angleY % 360;

    // 将角度转换为弧度
    float radiansX = static_cast<float>(MATH_PI / 180.0f * angleX);
    float radiansY = static_cast<float>(MATH_PI / 180.0f * angleY);

    // 创建透视投影矩阵
    glm::mat4 Projection = glm::perspective(45.0f, ratio, 0.1f, 100.f);

    // 使用 glm::lookAt 定义视图矩阵
    glm::mat4 View = glm::lookAt(
        glm::vec3(0, 0, 4),  // 相机位置在 (0,0,1),在世界坐标系中
        glm::vec3(0, 0, 0),  // 朝向原点
        glm::vec3(0, 1, 0)   // 头部朝上 (设置为 0,-1,0 以倒置视图)
    );

    // 使用缩放、旋转和平移变换矩阵创建模型矩阵
    glm::mat4 Model = glm::mat4(1.0f);
    Model = glm::scale(Model, glm::vec3(m_ScaleX, m_ScaleY, 1.0f));
    Model = glm::rotate(Model, radiansX, glm::vec3(1.0f, 0.0f, 0.0f));
    Model = glm::rotate(Model, radiansY, glm::vec3(0.0f, 1.0f, 0.0f));
    Model = glm::translate(Model, glm::vec3(0.0f, 0.0f, 0.0f));

    // 将投影矩阵、视图矩阵和模型矩阵相乘,得到最终的 MVP 矩阵
    mvpMatrix = Projection * View * Model;
}

解读:

这段代码定义了一个名为CoordSystemSample的类的成员函数 UpdateMVPMatrix,该函数用于更新一个传入的 glm::mat4 类型的矩阵mvpMatrix,以实现模型视图投影(MVP)矩阵的计算。

具体而言,函数接受三个参数:angleX 和 angleY 表示绕 X 轴和 Y 轴的旋转角度(以度为单位),ratio 表示投影矩阵的宽高比。

在函数内部,首先确保角度在 [0, 359] 的范围内,然后将角度转换为弧度。接着,创建透视投影矩阵Projection 和视图矩阵 View,其中视图矩阵使用 glm::lookAt 函数定义了一个相机位置在 (0,0,4),朝向原点,上方朝向 y 轴正方向的视图。

然后,通过组合缩放、旋转和平移的变换矩阵,构建了模型矩阵Model。最后,将投影矩阵、视图矩阵和模型矩阵相乘,得到最终的 MVP 矩阵,存储在传入的 mvpMatrix中。


从整体看,ChatGPT 这个回答水平已经可以了。

到这里,估计会有读者觉得自己设计 Prompt 竟然要考虑那么多细节,感觉有点麻烦。

没有问题,其实一些生活中常用的 Prompt 模版早已经有人设计好并共享出来了,直接复制粘贴拿过来用就好了。

图片

推荐网站:https://prompts.chat/

图片

网站搜集了很多种类的 Prompt 模版,支持在线编辑和复制,使用起来非常方便。

关于 ChatGPT 的高效使用,你有什么心得不妨也分享一下吧。

技术交流

技术交流群/职场困惑解答,可以添加我的微信:Byte-Flow

联系我

  • 23
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ChatGPT 是一种聊天机器人,具有自然语言生成能力。它是由 OpenAI 研发的,旨在帮助人们与机器人进行自然语言交流。 但是,ChatGPT 没有取代搜索引擎的能力。它的主要用途是进行自然语言对话,而不是搜索信息。搜索引擎是一种用于在互联网上搜索信息的工具,它通常包含一个自动索引的数据库,可以帮助人们快速找到相关的网站和信息。因此,ChatGPT搜索引擎是有区别的,不会取代搜索引擎。 ### 回答2: ChatGPT不会完全取代搜索引擎,但它可能成为一种补充和辅助的工具。搜索引擎主要通过关键词匹配和算法来提供相关的网页结果,而ChatGPT则是一个基于人工智能的对话模型,可以进行自然语言理解和生成。ChatGPT在回答问题和提供信息方面具有优势,可以提供更加个性化、交互性强的答案,而不仅仅是简单的链接。它可以通过对话的方式与用户进行更深入的交流,解答特定问题和提供定制化的建议。 然而,搜索引擎仍然有其独特的优势。它可以提供大量的相关链接和全球范围内的信息,对于用户查询广度较大的问题依然具有很高的效用。搜索引擎也在信息检索方面更加全面和及时,能够主动更新和索引互联网上的信息,而ChatGPT则需要提前训练和定制,对新兴的、时效性强的信息可能无法及时做出回应。 因此,ChatGPT可以作为搜索引擎的补充,提供更加智能和交互性的信息服务。对于用户们需要更加个性化和深入交流的问题,ChatGPT能够提供更好的解答和建议。但是对于那些需要更广泛的信息搜索和即时性的问题,搜索引擎仍然是更合适的选择。所以,ChatGPT搜索引擎可以形成一个相互补充的关系,共同为用户提供更完善的信息服务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

字节流动

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

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

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

打赏作者

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

抵扣说明:

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

余额充值