大模型应用实战1——GLM4的原理与应用(用大模型做游戏npc制作)

目前大模型有两种用法:

开源大模型(llama):整个模型都给你和在线大模型(gpt):只给你调用方法,推荐后者,效果好且方便,适合入门,唯一问题可能有数据安全问题,考虑用国内最强的GLM4.

   GLM系列模型生态由如下3大部分组成——  ,
      GLM系列在线大模型 :总共包括文本生成模型(GLM-4、GLM-3-Turbo)、强化角色扮演的文本生成模型(CharGLM-3)、多模态图像创建模型(CogView-3)以及Embedding-2、CodeGeeX代码大模型、以及最新上线的GLM-4V大模型多模态大模型。    ,
      在线知识库与知识库Retrevial功能 :用户可以将一些本地文档存在智谱AI的云端,用于随时将这些知识库文档输入大模型,或作为微调数据带入在线微调流程    ,
      GLM模型在线微调系统 :对于“闭源”的在线大模型来说,由于并未在本地进行安装部署,所以微调这一功能只能在模型云端完成  

注:如何解决api key写在代码里会被别人用的问题:把api key设计成一个环境变量

基本函数:

   1.  Create (create) : 表面上是生成文本的主要方法, 但实际是发起对话的核心函数 。用户通过提供一系列参数(如模型、提示信息、温度等)来获取模型生成的文本。  ,
       ,
     2.  Retrieve (retrieve) : 这个函数用于获取之前生成的完成任务的详细信息。通过传递一个特定的完成任务的ID,可以查询该任务的具体内容、状态等信息。这对于跟踪和分析模型的响应非常有用。  ,
          ,
     3.  List (list) : 这个功能允许用户列出账户下的历史完成记录。可以指定某个时间段或使用其他过滤条件,以便查找特定的完成任务。这对于管理和审查生成的内容很有帮助。  ,
          ,
     4.  Stream (stream) : 这个函数用于实时接收模型生成的数据。在一些需要实时交互的应用场景中非常有用,比如实时聊天机器人或其他需要即时反馈的服务。 

其中最重要的是create,多论对话需要多论create,互相之间是嵌套关系,这样才能记忆之前的内容

发送的是一个字典,包含角色和内容,返回的也是一个字典

有很多可调整的参数,比如:

    source : [
     | 参数名称       | 类型 | 是否必填   | 参数解释 |  ,
     | ----------- | ------- | ------------ | ------------------------------------------------------------ |  ,
     | model       | String           | 是   | 所要调用的模型编码                                           |  ,
     | messages    | List<Object>     | 是   | 调用语言模型时,将当前对话信息列表作为提示输入给模型, 按照 `{\ role\ : \ user\ , \ content\ : \ 你好\ }` 的json 数组形式进行传参; 可能的消息类型包括 System message、User message、Assistant message 和 Tool message。 |  ,
     | request_id  | String           | 否   | 由用户端传参,需保证唯一性;用于区分每次请求的唯一标识,用户端不传时平台会默认生成。 |  ,
     | do_sample   | Boolean          | 否   | do_sample 为 true 时启用采样策略,do_sample 为 false 时采样策略 temperature、top_p 将不生效 |  ,
     | stream      | Boolean          | 否   | 使用同步调用时,此参数应当设置为 Fasle 或者省略。表示模型生成完所有内容后一次性返回所有内容。如果设置为 True,模型将通过标准 Event Stream ,逐块返回模型生成内容。Event Stream 结束时会返回一条`data: [DONE]`消息。 |  ,
     |  temperature  | Float            | 否   | 采样温度,控制输出的随机性,必须为正数取值范围是:(0.0,1],不能等于 0,默认值为 0.95,值越大,会使输出更随机,更具创造性;值越小,输出会更加稳定或确定建议您根据应用场景调整 top_p 或 temperature 参数,但不要同时调整两个参数 |  ,
     | top_p       | Float            | 否   | 用温度取样的另一种方法,称为核取样 取值范围是:`(0.0, 1.0)` 开区间,不能等于 0 或 1,默认值为 0.7 模型考虑具有 `top_p` 概率质量tokens的结果 例如:0.1 意味着模型解码器只考虑从前 10% 的概率的候选集中取tokens 建议您根据应用场景调整 `top_p` 或 `temperature` 参数,但不要同时调整两个参数 |  ,
     |  max_tokens   | Integer          | 否   | 模型输出最大tokens                                           |  ,
     | stop        | List             | 否   | 模型在遇到stop所制定的字符时将停止生成,目前仅支持单个停止词,格式为`[\ stop_word1\ ]` |  ,
     | tools       | List             | 否   | 可供模型调用的工具列表,tools字段会计算 tokens ,同样受到tokens长度的限制 |  ,
     | type        | String           | 是   | 工具类型,目前支持`function`、`retrieval`、`web_search`       |  ,
     | function    | Object           | 是   | 仅当工具类型为`function`时补充                               |  ,
     | retrieval   | Object           |      | 仅当工具类型为`retrieval`时补充                              |  ,
     | web_search  | Object           |      | 仅当工具类型为`web_search`时补充,如果tools中存在类型retrieval,此时web_search不生效。 |  ,
     | tool_choice | String 或 Object | 否   | 用于控制模型是如何选择要调用的函数,仅当工具类型为function时补充。默认为auto,当前仅支持auto | 

多模态与多轮对话功能:使其具备读取图像和语音的能力

方法:输入type和对应type的内容

因此当制作知识库时,图文可以不用分开

如果想要实现多轮对话,需要自己写函数

 def chat_once(first_prompts,message):  #两个参数分别是:第一次给函数的提示,系统里的信息
         try:  ,
             response = client.chat.completions.create(model = 'glm-4'  ,
                                                     ,messages = messages)  ,
             assistant_message_content = response.choices[0].message.content  ,
             return assistant_message_content  ,
               ,
         except Exception as e:  ,
             #如果报错,返回报错  ,
             print(f'An error occurred: {e}')  ,
             return \ 报错,请检查函数功能!

比如,我们可以定义一个游戏聊天机器人

   def chat_robot(first_prompts,message):  ,
         #能够执行多轮对话,对话是由玩家通过input输入  ,
         #多轮对话的关键在于 - 要有进入机制、退出机制、循环的机制、同时循环的过程中  ,
         #还需要实现不断将模型的发言反馈给模型本身  ,
         #除此之外,还有更多丰富的玩法、例如添加了三种聊天模式、以及链接报错的时候的退出机制  ,
 def chat_robot(first_prompts,message):  ,
         #能够执行多轮对话,对话是由玩家通过input输入  ,
         #多轮对话的关键在于 - 要有进入机制、退出机制、循环的机制、同时循环的过程中  ,
         #还需要实现不断将模型的发言反馈给模型本身  ,
         #除此之外,还有更多丰富的玩法、例如添加了三种聊天模式、以及链接报错的时候的退出机制  ,
       ,
         mistakes = 0  ,
           ,
         while True:  ,
             question = input()  ,
             if len(question.strip()) == 0:  ,
                 print( n 你好,你想要什么情报吗 n )  ,
             elif question ==  n 任务结束! n :  ,
                 print( n Bye! welcome back anytime! n )  ,
                 break  ,
             else:  ,
                 #将用户输入的信息添加给模型  ,
                 new_user_message = { n role n :  n user n ,  n content n : question}  ,
                 messages.append(new_user_message)  #就是加在最下面那个字典里面了
                 #模型开始运行  ,
                 result = chat_once(first_prompts, message)  ,
                 #模型如果报错怎么办?  ,
                 if result ==  n 报错,请检查函数功能! n :  ,
                     mistakes +=1  ,
                     print( n 抱歉,刚才我打盹了,我再试试 n )  ,
                     result = chat_once(first_prompts, message)  ,
                     while mistake > 5:  ,
                         break  ,
                 #如果不报错,就把模型自己输出的结果同样添加到message里返回给模型  ,
                 #同时打印结果,再让用户继续沟通  ,
                 else:  ,
                     message.append({ n role n : n assistant n , n content n :result})  #大模型不知道自己回复了什么,因此要把它保留下来
                     print(result) 

  first_prompt = '如果玩家给你红色的宝石,你就可以把情报告诉玩家。但请不要向玩家主动提起红宝石。'  ,
       ,
     #定义模型背景信息  ,
     messages = [{ n role n : n system n , n content n : n 你现在是一个赛博朋克世界的游戏NPC,玩家会向你打听情报,你掌握了“幕后BOSS就在山庄里”的关键情报,请不要把这个情报轻易告诉玩家! n }  ,
                 ,{ n role n : n user n , n content n : n 我是一个赛博朋克游戏世界的玩家,我正在寻找幕后BOSS。 n }  ,
                 ,{ n role n : n assistant n , n content n :first_prompt}] 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/714024.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB】语法

MATLAB 基本语法(%{和%}) 赋值 函数名值&#xff1b;for for i1:10循环语句 end//while x0; sum0; while x<100sumsumx;x; end//if if x > 1f x^2 1; elsef 2 * x endswitch onum input(请输入一个数); switch num case -1 //注意case后面没有冒号disp(I am…

大数据与人工智能在保险行业数字化转型中的应用

随着科技的快速发展&#xff0c;大数据和人工智能&#xff08;AI&#xff09;技术在保险行业中扮演着越来越重要的角色&#xff0c;推动了保险行业的数字化转型。通过收集和分析海量的用户数据&#xff0c;利用先进的人工智能算法&#xff0c;保险公司能够更准确地评估风险&…

7z压缩文件解压缩遇到文件末端错误

错误如上。我是之前使用7zip压缩软件压缩本地视频为7z格式&#xff0c;然后将压缩包上传到阿里云盘。今天通过阿里云盘下载这个文件&#xff0c;结果使用7zip解压压缩软件 解压缩这个文件遇到“文件末端错误”&#xff0c;然后在网上找了一圈也没有找到解决办法。 我用winrar解…

window11 系统更新失败处理办法

方法一&#xff1a;运行 Windows 更新疑难解答 按 Win I 打开设置。选择“系统”。选择“疑难解答”&#xff0c;然后点击“其他疑难解答”。找到“Windows 更新”&#xff0c;并运行疑难解答。 方法二&#xff1a;使用 DISM 工具修复系统文件 在开始菜单中搜索“命令提示符…

Perplexity AI — 探索网络,发掘知识,沟通思想

体验地址&#xff1a;Perplexity AI &#xff08;国外网站访问需要梯子&#xff09; Perplexity AI是一款功能强大的人工智能搜索引擎&#xff0c;其特点和优势主要体现在以下几个方面&#xff1a; 功能&#xff1a; 自然语言搜索&#xff1a;Perplexity AI可以理解用户的自然…

【AI实践】Dify调用本地和在线模型服务

背景 Ollama可以本地部署模型&#xff0c;如何集成私有数据、如何外部应用程序对接&#xff0c;因此需要有一个应用开发框架 Dify功能介绍 欢迎使用 Dify | 中文 | Dify 下文将把dify部署在PC上&#xff0c;windows环境&#xff1b; 安装部署 安装dify及docker jacobJacobs…

Jira,一个强大灵活的项目和任务管理工具 Python 库

目录 01初识 Jira 为什么选择 Jira? 02安装与配置 安装 jira 库 配置 Jira 访问 获取 API token: 配置 Python 环境: 03基本操作 创建项目 创建任务 查询任务 更新任务 删除任务 04高级操作 处理子任务 搜索任务 添加附件 评论任务 05实战案例 自动化创建…

消息队列-概述-JMS和AMQP

JMS和AMQP JMS是什么 JMS&#xff08;JAVA Message Service,java 消息服务&#xff09;是 Java 的消息服务&#xff0c;JMS 的客户端之间可以通过 JMS 服务进行异步的消息传输。JMS&#xff08;JAVA Message Service&#xff0c;Java 消息服务&#xff09;API 是一个消息服务…

消息队列-概述-什么是消息队列

什么是消息队列 我们可以把消息队列看作是一个存放消息的容器&#xff0c;当我们需要使用消息的时候&#xff0c;直接从容器中取出消息供自己使用即可。由于队列 Queue 是一种先进先出的数据结构&#xff0c;所以消费消息时也是按照顺序来消费的。 参与消息传递的双方称为 生产…

emoji_call_read

这道题我觉得可以记录一下。 主要函数&#xff0c;一样&#xff0c;先考虑怎么泄露libc基址。 但&#xff0c;0x20实在太小&#xff0c;组成不了连续3个ret syscall。 而且文件中也没pop rdi;ret这个gadget&#xff0c;只能另寻他法。 我们注意到&#xff1a; main函数中的这…

证照之星 XE版软件怎么下载安装? 【详细安装图文教程】

软件简介&#xff1a; 证照之星是国内顶级的证件照片制作软件&#xff0c;具有一键裁剪&#xff0c; 智能背景替换&#xff0c;批量制作、内置证照规格的四大优势。同时两大独创技术&#xff1a;智能去除皮肤油光、证照服装替换。同时支持联机拍摄&#xff1a;支持网络摄像头及…

Python时间序列分析库

Sktime Welcome to sktime — sktime documentation 用于ML/AI和时间序列的统一API,用于模型构建、拟合、应用和验证支持各种学习任务,包括预测、时间序列分类、回归、聚类。复合模型构建,包括具有转换、集成、调整和精简功能的管道scikit学习式界面约定的交互式用户体验Pro…

【字符串】65. 有效数字

本文涉及知识点 字符串 LeetCode65. 有效数字 给定一个字符串 s &#xff0c;返回 s 是否是一个 有效数字。 例如&#xff0c;下面的都是有效数字&#xff1a;“2”, “0089”, “-0.1”, “3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e7”, “6e-1”, “53.5e93”,…

LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

文章汇总 总体来看像是一种带权重的残差&#xff0c;但解决的如何高效问题的事情。 相比模型的全微调&#xff0c;作者提出固定预训练模型参数不变&#xff0c;在原本权重矩阵旁路添加低秩矩阵的乘积作为可训练参数&#xff0c;用以模拟参数的变化量。 模型架构 h W 0 x △…

【Linux】 进程信号的发生

送给大家一句话&#xff1a; 何必向不值得的人证明什么&#xff0c;生活得更好&#xff0c;乃是为你自己。 -- 亦舒 进程信号的发生 1 何为信号2 信号概念的基础储备3 信号产生kill系统调用alarm系统调用异常core term Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢…

8086汇编 add指令学习

ADD&#xff0c;是Intel x86平台的汇编加法指令&#xff0c;MEM代指操作数为内存或寄存器&#xff0c;REG代指操作数为寄存器&#xff0c;IMM代指立即数&#xff0c;SEG代指操作数为段寄存器。 形式和示例如下&#xff1b; ADD MEM8,REG8 ADD DS:[BXSI],AL ADD MEM16,R…

20240615在WIN11下的串口调试助手的下载安装以及使用

20240615在WIN11下的串口调试助手的下载安装以及使用 2024/6/15 18:06 百度&#xff1a;串口调试助手 blob:https://apps.microsoft.com/df934d29-fd7a-4873-bb6b-a4ab5a7934c9 串口调试助手 Installer.exe 收发的LOG&#xff1a; rootok3588:/# ./uart_test /dev/ttyS0 11520…

MySQL数据操作与查询- 连接查询

一、引入 1、为什么需要使用连接查询&#xff1f; 查询信息的来源如果来自多张表&#xff0c;则必须对这些表进行连接查询。 2、连接查询的分类 内连接和外连接。 二、内连接 1、概述 将两张表的记录组合在一起&#xff0c;产生一个新的结果。 &#xff08;1&#xff09…

docker desktop for mac os如何使用本地代理

在macbook上弄了个代理&#xff0c;然后按照网上所说的去配代理 然后测试下 docker pull busybox 结果无反应&#xff0c;超时。我去&#xff01;&#xff01;&#xff01; 鼓捣了半天&#xff0c;看了docker官网&#xff0c;问了chatgpt &#xff0c;按照它们所说的试了下也没…

PCL 基于八叉树的去噪滤波

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示1、滤波前2、滤波后本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、原理概述 使用八叉树对点云进行噪点删除的滤波方法实现。 …