学习.NET MAUI Blazor(七)、实现一个真正的ChatGPT聊天应用

今天在新闻上看到一条消息,OpenAI已经开放了ChatGPT的接口,也就是GPT-3.5,对比原来的GPT-3,增加了gpt-3.5-turbogpt-3.5-turbo-0301两个模型。

  • gpt-3.5-turbo:使用最新的GPT-3.5模型,并针对聊天进行了优化,使用最新的模型进行迭代
  • gpt-3.5-turbo-0301:属于 gpt-3.5-turbo的快照,此模型不会进行更新,并且在2023年6月1日停止支持
    因此,我们使用gpt-3.5-turbo就可以了。

对于GPT-3,GPT-3.5是支持上下文的。通过API,我们可以完成完整的聊天了。gpt-3.5-turbo的API如下:

  • model:我们使用gpt-3.5-turbo
  • messages:数组形式,例如:[{"role": "user", "content": "Hello!"}]role分为三种角色,分别是systemassistantuser
  • temperature:取值是0-2,
  • top_p:默认值是1,
  • n:默认值是1
  • stream:默认值是false
  • stop:默认值是null
  • max_tokens:最大值是4096
  • presence_penalty:默认值是0
  • frequency_penalty:默认值是0
  • logit_bias:默认值是null
    其中,modelmessages是必填的,其他,我们采用默认值就可以了
    根据上一篇文章,学习.NET MAUI Blazor(六)、基于OpenAI接口的伪ChatGPT,我们还是使用开源的SDK类库OpenAI-DotNet,该类库于3月2日升级到了5.0版本,新增了Chat接口,这样就可以实现聊天应用了。接着上一篇文章,我们来做一个真正的ChatGPT对话功能。

打开Shared/NavMenu.razor,修改内容如下:

<div class="top-row ps-3 navbar navbar-dark"><div class="container-fluid"><a class="navbar-brand" href="">OpenAI</a><button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu"><span class="navbar-toggler-icon"></span></button></div>
</div><div class="@NavMenuCssClass" @onclick="ToggleNavMenu"><nav class="flex-column"><div class="nav-item px-3"><NavLink class="nav-link" href="" Match="NavLinkMatch.All"><span class="oi oi-home" aria-hidden="true"></span> 文本</NavLink></div><div class="nav-item px-3"><NavLink class="nav-link" href="chat" Match="NavLinkMatch.All"><span class="oi oi-chat" aria-hidden="true"></span> 对话</NavLink></div><div class="nav-item px-3"><NavLink class="nav-link" href="code"><span class="oi oi-plus" aria-hidden="true"></span> 代码</NavLink></div><div class="nav-item px-3"><NavLink class="nav-link" href="image"><span class="oi oi-list-rich" aria-hidden="true"></span> 图像</NavLink></div></nav>
</div>@code {private bool collapseNavMenu = true;private string NavMenuCssClass => collapseNavMenu ? "collapse" : null;private void ToggleNavMenu(){collapseNavMenu = !collapseNavMenu;}
}

接着在Pages目录下,新建一个Chat.razor。页面内容如下:

@using System.Text;
@using Mode;
@page "/chat"
<MContainer Class="spacing-playground pa-6 pr h-100" Fluid><MSkeletonLoader Class="mb-12 h-full w-100" Boilerplate="@Boilerplate" Elevation="2" Loading="@Boilerplate" Type="article, actions"><ChildContent><MRow Class="h-full body_row"><MCol Class="d-flex answers_box" Cols="24" Sm="12"><MVirtualScroll Class="answer_list_box" Items="_items" @ref="_vs"><ItemContent><MListItem Class=" d-flex flex-column"><div class="question_items d-flex flex-row w-100"><div class="quest_img"><img src="image/user.png" /></div><div class="question_txt">@context.question</div></div><div class="answers_items d-flex flex-row  w-100"><div class="answer-img"><svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" class="h-6 w-6"><path d="M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z" fill="currentColor"></path></svg></div><div class="answer-txt">@context.answer</div></div></MListItem></ItemContent></MVirtualScroll></MCol></MRow><div class="footer_box"><div class="d-flex justify-content-center"><div class="col-18 col-sm-9"><div class="send_box"><textarea class="send_input" @bind="question"></textarea><MButton Class="send_btn" Fab Small Color="primary" OnClick="RequestAnswers"><MIcon Size="14">mdi-send-outline</MIcon></MButton></div></div></div></div></ChildContent></MSkeletonLoader></MContainer>

编写Code代码

@code {public string question = "";private bool Boilerplate = false;private MVirtualScroll<QA> _vs;private List<OpenAI.Chat.ChatPrompt> chatPromptsList = new List<OpenAI.Chat.ChatPrompt>();private List<QA> _items = new();private async Task RequestAnswers(){Boilerplate = true;var api = new OpenAI.OpenAIClient(new OpenAI.OpenAIAuthentication(OpenAIConfig.api_key));OpenAI.Chat.ChatPrompt chatPrompt = new OpenAI.Chat.ChatPrompt("user", question);chatPromptsList.Add(chatPrompt);var chatRequest = new OpenAI.Chat.ChatRequest(chatPromptsList);QA qa = new();qa.question = question;var result = await api.ChatEndpoint.GetCompletionAsync(chatRequest);string answer = result.FirstChoice.Message.Content;answer = answer.ReplaceFirst("\r", "").ReplaceFirst("\n", "");qa.answer = answer;_items.Add(qa);Boilerplate = false;}}

至此,一个简单的聊天应用就完成了。运行效果如下:
在这里插入图片描述
从运行效果来看,使用GPT-3.5的接口,确实支持上下文了。

总结
注册了openai的账号,送的18刀比较耐用,自己玩了很久,才用了不到1刀。所以,下载下来,尽情玩耍吧。

实例完整源码下载

点击下方公众号卡片,关注我,回复1003 下载!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT调研报告:发展到今天这一步,哪个职业最慌?

ChatGPT的流行&#xff0c;让AIGC受到了空前的关注。 AIGC&#xff0c;即 AI Generated Content&#xff0c;是指利用人工智能技术来生成内容&#xff0c;比如AI写作、AI绘画、AI编程、AI语音合成等。 就在3月29日&#xff0c;一封来自美国研究机构Future of Life Institute的公…

实际体验文心一言 VS ChatGPT

一直在关注ChatGPT与百度的文心一言&#xff0c;文心一言的发布会完成后&#xff0c;第一时间申请了体验资格&#xff0c;不得不说&#xff0c;百度的效率还是非常高的。没几个小时就给了邀请码了&#xff01; 为了体验文心一言与ChatGPT的能力&#xff0c;我从几个方面进行了比…

chatgpt赋能python:如何加速手写卷积操作-Python篇

如何加速手写卷积操作 - Python篇 卷积操作是深度学习领域中常用的操作之一。在Python中&#xff0c;可以使用各种库来实现卷积操作。然而&#xff0c;手写卷积操作可能是更高效的解决方案。在本篇文章中&#xff0c;我们将介绍如何通过优化手写代码来加速卷积操作。 为什么手…

华为版ChatGPT正在路上:预计7月发布,命名“盘古Chat”

据消息称&#xff0c;华为将在7月7日举行的HDC.Cloud 2023开发者大会上&#xff0c;推出一款全新的人工智能产品——盘古Chat&#xff0c;这是一款与ChatGPT相媲美的多模态千亿级大模型&#xff0c;可以实现自然语言理解、对话生成、图像识别等功能。 据了解&#xff0c;盘古Ch…

上海车展,没有争奇斗艳的车模,只有往死里卷的智能汽车

文&#xff5c;光锥智能&#xff0c;作者&#xff5c;王一粟、周文斌 “车在变&#xff0c;产业链在重构。” 岚图CEO卢放的这一语&#xff0c;戳中了车企们近年来最深刻的体验。 在2023年的上海车展&#xff0c;等着介绍自家油泵、轴承的传统汽车供应商们&#xff0c;面前却…

AI 诈骗--有人10分钟被骗430万,你真的被AI打败了吗

1、科技公司老板 10分钟被骗430万 5月22日&#xff0c;一起利用人工智能&#xff08;AI&#xff09;实施电信诈骗&#xff08;10分钟被骗430万&#xff09;的典型案例冲上热搜&#xff0c;引发关注。会不会有人有疑惑是不是被骗的人傻&#xff0c;其实不然&#xff0c;可以看详…

在航天院做软件开发,月薪税前2W

本文转自公子龙龙龙 航天院所和互联网相比薪资如何&#xff1f;两者各有什么优劣&#xff1f; 从今年的找工作薪资爆料上看&#xff0c;大概在税前 2W 的水平。 分享一位答主朋友&#xff0c;在航天院的工作感受。 希望对于同样有过纠结的小伙伴&#xff0c;有所帮助~ 作者&…

李彦宏:文心一言对标ChatGPT门槛很高,希望所有人从中受益

3月16日下午&#xff0c;百度于北京总部召开新闻发布会&#xff0c;主题围绕新一代大语言模型、生成式AI产品文心一言。百度创始人、董事长兼首席执行官李彦宏出席及百度首席技术官王海峰出席&#xff0c;并展示了文心一言在文学创作、商业文案创作、数理推算、中文理解、多模态…

月薪15000,在大西安的生活现状。

看到我前同事写的一个帖子&#xff0c;挺有感触的。 文中说到的“偶尔和邻居同事聚一下&#xff0c;花个200-300”中的同事&#xff0c;波哥就是其中之一。 当年&#xff0c;我和作者曾在一个项目组共事&#xff0c;一起去公司食堂吃午饭&#xff0c;下午工作累了会一起在园区散…

35岁定律到了网络安全行业居然失效了?

前言 对于一个工作快10年的人来说&#xff0c;我觉得我有一定的思考沉淀来回答这个问题。这里先说一下我的一些经历吧&#xff1a; 普通一本毕业&#xff0c;专业是自动化&#xff0c;大学由于挂科太多没拿到学位证到上海找实习&#xff0c;一开始做的是开发&#xff0c;从14…

5月琐碎但值得的事情

转眼间时间就来到了6月份&#xff0c;又该写5月的思考总结了&#xff0c;依然记录一些5月份发生的小事或者收获&#xff0c; 这些内容本意给我记录生活的&#xff0c;如果对你有一些帮助就更好了。 往期&#xff1a; 1月的碎碎念&#xff0c;但是很有必要 二月的一些琐事&#…

LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

大型语言模型 (LLM) 正在成为一种变革性技术&#xff0c;使开发人员能够构建他们以前无法构建的应用程序。 但是单独使用这些 LLM 往往不足以创建一个真正强大的应用程序&#xff0c;只有当LLM与其它各种资源介质如数据库&#xff0c;文档&#xff0c;知识库,pdf电子书等相结合…

ChatGPT相关指令使用大全之二

小编接上一篇文章继续为大家说明 8.英语学习 1)背单字法宝 用中文/英文解释以下英文单字&#xff1a;填入一个或多个单字。请用表格的方式呈现&#xff0c;并且表格内须包含单字、词性、解释与例句。 例&#xff1a;用中文解释以下英文单字&#xff1a;apple, orange, doct…

架构简析| 一种Generative Agents

Generative Agents 架构简析 斯坦福《Generative Agents: Interactive Simulacra of Human Behavior》论文解读。 demo地址 论文原文地址 agent架构&#xff1a; Agent记忆的的核心挑战是确保在需要时检索和合成agent内存中最相关的部分。 我们的体系结构的中心是内存流&…

广州蓝景—结合chatGPT下的教育模式变化

最近爆火的人工智能AI聊天工具ChatGPT&#xff0c;不仅在互联网&#xff0c;更是在各行各业中&#xff0c;得到了广泛的传播&#xff0c;应该没有哪一个不知道它的存在&#xff0c;但其实你又是否知道&#xff0c;其实ChatGPT是一类模型的统称&#xff0c;随着人工智能的快速发…

2023 全新 ChatGPT余额查询网页源码

实测可用,界面轻量级,接口已配置,直接用就可以了 2023 全新 ChatGPT余额查询网页源码。。。。。。。。。。。。。

2023 API OPENAI批量查询账户余额HTML源码

OPENAI批量查询api账户余额源码&#xff0c;可用来查询openai api的账户类型、总额度、已使用、剩余额度、有效期。 可自定义API

Kotlin 学习笔记(六)—— Flow 数据流学习实践指北(二)StateFlow 与 SharedFlow

要说最近圈内大事件&#xff0c;那就非 chatGPT 莫属了&#xff01;人工智能领域最新的大突破了吧&#xff1f;很可能引发下一场的技术革命&#xff0c;因为大家都懂的原因现在还不能在中国大陆使用&#xff0c;不过国内的度厂正在积极跟进了&#xff0c;预计3月份能面世&#…

谷歌,这回是很难了。。。

今年&#xff0c;谷歌先是史无前例裁员1.2w人&#xff0c;如今核心业务又遭遇chatGPT的挑战&#xff0c;仓促上马的Bard首秀翻车&#xff0c;一夜之间市值蒸发1000亿美元~ 此外&#xff0c;由于扁平化管理的逐步实现&#xff0c;本周一谷歌宣布&#xff0c;要减少senior role的…

名创优品怎么把创意做成生意?

最近&#xff0c;“主”无处不在&#xff0c;从让“依托答辩”梗火出圈的动画《三体》&#xff0c;到备受好评的电视剧《三体》&#xff0c;再到仍在刷新高票房成绩的《流浪地球2》。 作为近些年来中国为数不多的爆款IP制造者&#xff0c;刘慈欣在《三体》中提出了一个著名的理…