构建无服务器 ChatGPT 支持的简历助手 - 基础

项目起源

几个周末前,我很想用 OpenAI API 构建一些东西。作为一名进入云领域的转行者和在早期职业人才领域工作的人,我敏锐地意识到候选人为他们所申请的职位撰写有针对性的简历是多么重要和困难。因此,我决定制作一个由 ChatGPT 提供支持的简历助手。

关于大型语言模型 (LLM),特别是 ChatGPT,已经有很多文章了,我并不是真的想在其中添加内容。我想解决的一件事是批评法学硕士只是自信和令人信服的废话。对于撰写学术论文而言,这不是一个很好的特征,但是是否有应用程序可以成为优势?

如果你仔细想想,一份简历也可能被认为是充满自信、令人信服的废话。不,我并不是说在简历上撒谎是可以接受的,但我们经常发现自己在写简历时会稍微扩展自己的经验,这样我们才能更好地符合给定职位描述的要求说到哪个..

职位描述也是一种类似的充满抱负的废话。要求是基于一份不再真正匹配工作的旧工作,或者只是对上一个人的经历的描述(离开的人挣的钱比他们给你的多 20%)。因此,简历、工作描述和法学硕士共同构成了我所说的“诚实三合一”

因此,在确定 LMM 是完美的简历助手后,我们现在将构建一个无服务器应用程序,在给定“简历”和职位描述的情况下,可以通过虚拟简历审查来定制适合该职位的简历,即 和你的谈话。

计划

由于这篇文章的大部分内容都写在一篇文章中,而且它太长了所以我决定将其分成 4 篇文章。

  1. 简介和一些背景(这篇文章)
  2. 构建一个可以从命令行在本地运行和测试的 Python 函数
  3. 使用 AWS CDK (Python) 将该函数部署到云(但仍通过 CLI 与其交互)
  4. 部署前端以便我们可以允许其他人使用该服务

这应该使事情变得更小一些,并允许任何想要构建它(或对其进行自己的修改)的人通常专注于一个文件或区域,而不是像疯子一样跳来跳去。

与 ChatGPT 的对话如何运作

让我们谈谈 OpenAI 库以及 ChatGPT 对话的工作原理。

首先,每次对话都有三个参与者,assistant- 聊天机器人,user- 与聊天机器人聊天的人,以及system- 一个隐藏但重要的参与者,它设定了对话的基调。

其次,该系统消息是您的“秘密武器”。将您的机器人与仅与ChatGPT聊天区分开来的东西。通过系统消息,您可以设置将适用于对话持续时间的规则和约束。在这里,我们可以指示聊天机器人它是一个有用的简历审核助手,并且“如果他们缺乏直接经验,则可以利用可转移的技能”。这可能是您想保密的事情,否则其他人可能会复制您百万美元的想法!

第三,OpenAI API 不“记住”任何东西。每次向它传递请求时,您都需要提供生成相关完成所需的所有上下文。这意味着第一个请求可能如下所示:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">'role'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'system'</span><span style="color:var(--syntax-text-color)">,</span><span style="color:var(--syntax-string-color)">'content'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'You are a resume bot named Resume Bot 3000'</span><span style="color:var(--syntax-text-color)">},</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">'role'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'user'</span><span style="color:var(--syntax-text-color)">,</span><span style="color:var(--syntax-string-color)">'content'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'My name is Jimmy and I want a job as a Bank Teller!'</span><span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-text-color)">]</span>
</code></span></span>

您的第二个请求可能如下所示(我们将在一分钟内讨论解析响应):

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">'role'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'system'</span><span style="color:var(--syntax-text-color)">,</span><span style="color:var(--syntax-string-color)">'content'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'You are a resume bot named Resume Bot 3000'</span><span style="color:var(--syntax-text-color)">},</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">'role'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'user'</span><span style="color:var(--syntax-text-color)">,</span><span style="color:var(--syntax-string-color)">'content'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'My name is Jimmy and I want a job as a Bank Teller!'</span><span style="color:var(--syntax-text-color)">},</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">'role'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'assistant'</span><span style="color:var(--syntax-text-color)">,</span><span style="color:var(--syntax-string-color)">'content'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'Hi Jimmy, A bank teller is a job that typically requires money handling experience. Have you ever had a job or other experience where you had to handle cash or facilitate transactions?'</span><span style="color:var(--syntax-text-color)">},</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">'role'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'user'</span><span style="color:var(--syntax-text-color)">,</span><span style="color:var(--syntax-string-color)">'content'</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-string-color)">'Well, maybe not a job but I volunteered at school basketball games selling tickets for admission and also working at the concession stand. Does that count?'</span><span style="color:var(--syntax-text-color)">}</span>
<span style="color:var(--syntax-text-color)">]</span>
</code></span></span>

为了让 ChatGPT 了解正在发生的事情,它基本上每次都需要整个对话。一切对它来说都是新的。这意味着对话持续的时间越长,构建的上下文就越多,您的请求就越昂贵。

gpt-3.5-turbo 的上下文价格为 0.0015 美元/1k 代币(根据 openAI定价页面,大约 750 个字),响应价格为 0.003 美元/1k 代币。这可能相当便宜,但如果有很多人进行长时间交谈,也很容易失控。请务必在账单部分设置您的帐户限制。

虽然该项目的最终目标是将其部署到 AWS 上并向全世界开放,但我们首先将创建一个可以在本地运行的 python 函数。我们可以稍后修改它以在 AWS Lambda 中运行。因此,即使这段代码最终需要放入 CDK 项目的目录中,我们也将跳过该部分并在以后需要时进行重构。我们希望尽快获得一些工作代码的光荣反馈!

设置文件和虚拟环境

因此,让我们创建一个名为的目录chat_app,我们将首先使用该目录在本地运行我们的聊天机器人,然后与我们部署的 AWS Lambda 函数进行通信。一旦我们创建了目录,我们就可以将我们需要的文件添加到一个小的 python 项目中:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-text-color)">mkdir </span>chat_app
<span style="color:var(--syntax-text-color)">cd </span>chat_app
<span style="color:var(--syntax-text-color)">touch </span>app.py requirements.txt
</code></span></span>

现在将OpenAI 库添加到您的requirements.txt. 我将在撰写本文时固定可用的最新版本,但您可以在阅读本文时查看最新版本。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code># chat_app/requirements.txtopenai==0.27.8
</code></span></span>

请注意,我将通过在我的所有代码块中添加一条注释来告诉您我在哪里,来尽量清楚我正在处理哪个文件。当我使用外部库或模块时,我也会尽力在文件顶部显示其导入。如果上一步已经导入,您可以跳过代码中的该部分。

现在我们已经在我们的requirements.txt创建虚拟环境中声明了第一个外部依赖项,并在虚拟环境中安装该依赖项。如果您计划将其中的任何内容提交到 git 存储库,请务必将其添加.venv/到您的.gitignore.

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>python3 <span style="color:var(--syntax-error-color)">-m</span> venv .venv
<span style="color:var(--syntax-text-color)">source</span> .venv/bin/activate   
pip <span style="color:var(--syntax-text-color)">install</span> <span style="color:var(--syntax-error-color)">-r</span> requirements.txt
</code></span></span>

现在让我们进入我们的 python 文件。我们将导入我们的模块,设置我们从 OpenAI 帐户获得的 OpenAPI 密钥。(你做对了吗?如果你没有,请去做吧!)

将您的密钥添加到这样的本地环境变量中,但使用您自己的密钥:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-text-color)">export </span><span style="color:var(--syntax-text-color)">OPENAI_API_KEY</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"sk-Th1si5n0tmyactua1k3y"</span>
</code></span></span>

让我们用一个简单的请求来测试你的密钥,看看会发生什么:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-comment-color)"># chat_app/app.py
</span>
<span style="color:var(--syntax-error-color)">import</span> <span style="color:var(--syntax-text-color)">openai</span>
<span style="color:var(--syntax-error-color)">import</span> <span style="color:var(--syntax-text-color)">os</span><span style="color:var(--syntax-text-color)">openai</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">api_key</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">os</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">environ</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">get</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">'OPENAI_API_KEY'</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-text-color)">messages</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"system"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"You are a Cat named Mr. Boots"</span><span style="color:var(--syntax-text-color)">},</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"user"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"What is your name?"</span><span style="color:var(--syntax-text-color)">},</span>
<span style="color:var(--syntax-text-color)">]</span><span style="color:var(--syntax-text-color)">completion</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">openai</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">ChatCompletion</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">create</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-text-color)">model</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"gpt-3.5-turbo"</span><span style="color:var(--syntax-text-color)">,</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-text-color)">completion</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">choices</span><span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-literal-color)">0</span><span style="color:var(--syntax-text-color)">].</span><span style="color:var(--syntax-text-color)">message</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">content</span><span style="color:var(--syntax-text-color)">)</span></code></span></span>

因此,我们正在创建一个由该系统消息引发的消息对话,并向用户发送一个有关助理名字的问题。

可以访问测试响应.choices[0].message.content,因此我们打印出该响应。

这是我运行时得到的响应:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code> ⚡  python app.py                                                             
I am a language model AI and my name is OpenAI. But for the purpose of this conversation, you can refer to me as Mr. Boots, the cat. Meow!
</code></span></span>

你可能会得到一些稍微不同的东西。语言模型就是这样。但猜猜怎么了!我们已经完成聊天工作了!现在让我们把它变成一个无限循环(有一些转义),这样我们就可以和布茨先生进行真正的对话了。

我们将从用户那里获取一些输入,并假设它不是我们的转义命令之一,然后进入我们的循环。我们将该输入添加到消息列表中并请求完成。然后我们将打印该响应并将其附加到消息列表中,并等待另一个用户响应。用户输入将决定是否再次进入循环,或者是否退出循环。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-comment-color)"># chat_app/app.py
</span>
<span style="color:var(--syntax-error-color)">import</span> <span style="color:var(--syntax-text-color)">openai</span>
<span style="color:var(--syntax-error-color)">import</span> <span style="color:var(--syntax-text-color)">os</span><span style="color:var(--syntax-text-color)">openai</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">api_key</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">os</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">environ</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">get</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">'OPENAI_API_KEY'</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-text-color)">messages</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"system"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"You are a Cat named Mr. Boots"</span><span style="color:var(--syntax-text-color)">},</span>
<span style="color:var(--syntax-text-color)">]</span><span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">input</span><span style="color:var(--syntax-text-color)">()</span><span style="color:var(--syntax-declaration-color)">while</span> <span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">not</span> <span style="color:var(--syntax-error-color)">in</span> <span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-string-color)">"exit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"Exit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"quit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"Quit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"stop"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"Stop"</span><span style="color:var(--syntax-text-color)">]:</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">append</span><span style="color:var(--syntax-text-color)">({</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"user"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-text-color)">})</span><span style="color:var(--syntax-text-color)">completion</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">openai</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">ChatCompletion</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">create</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-text-color)">model</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"gpt-3.5-turbo"</span><span style="color:var(--syntax-text-color)">,</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-text-color)">assistant_response</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">completion</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">choices</span><span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-literal-color)">0</span><span style="color:var(--syntax-text-color)">].</span><span style="color:var(--syntax-text-color)">message</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">content</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">append</span><span style="color:var(--syntax-text-color)">({</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"assistant"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">assistant_response</span> <span style="color:var(--syntax-text-color)">})</span><span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"Mr. Boots: </span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-text-color)">assistant_response</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">input</span><span style="color:var(--syntax-text-color)">()</span><span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">"Mr. Boots: GoodBye"</span><span style="color:var(--syntax-text-color)">)</span>
</code></span></span>

这是我运行时发生的情况:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code> ⚡  python app.py
Hello My name is Mr. Dog. What is your name?
Mr. Boots: My name is Mr. Boots. Nice to meet you, Mr. Dog.
Do you like laying in the sun?
Mr. Boots: Yes, I love to bask in the warmth of the sun. It makes me feel cozy and relaxed. How about you, Mr. Dog? Do you enjoy sunbathing?
exit
Mr. Boots: GoodBye
</code></span></span>

我们的第一次谈话!

再见布茨先生!我们有一份简历需要处理!

因此,让我们考虑一下我们的简历助理需要做哪些事情。

  1. 准备好系统消息
  2. 获取求职者(候选人)的简历或描述
  3. 获取某种工作描述
  4. 与候选人交谈以获取有关他们经历的更多信息
  5. 准备一份更好的简历

一旦我们将其存储在云中,我们将需要添加一些其他内容,但我们将在下一篇文章中处理这个问题。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-comment-color)"># chat_app/app.py
</span>
<span style="color:var(--syntax-error-color)">import</span> <span style="color:var(--syntax-text-color)">openai</span>
<span style="color:var(--syntax-error-color)">import</span> <span style="color:var(--syntax-text-color)">os</span><span style="color:var(--syntax-text-color)">openai</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">api_key</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">os</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">environ</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">get</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">'OPENAI_API_KEY'</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-text-color)">messages</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"system"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"You are a resume review assistant. You will be provided information about a job candidate. that information might be in the form of a formatted resume, or just a sentence about themselves. You also may also receive a description of a job or position sought by the candidate. Your task as the assistant is to prompt the candidate for additional information they could add to their resume to make it better generally, and more well suited for the job they are seeking specifically. Don't shy away from asking and promoting transferable and soft skills."</span><span style="color:var(--syntax-text-color)">},</span>
<span style="color:var(--syntax-text-color)">]</span>
<span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">"Please provide your resume or tell me about yourself"</span><span style="color:var(--syntax-text-color)">)</span>
<span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">input</span><span style="color:var(--syntax-text-color)">()</span>
<span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">append</span><span style="color:var(--syntax-text-color)">({</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"user"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"Candidate information: </span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-text-color)">user_input</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-text-color)">})</span><span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">"What job do you want?"</span><span style="color:var(--syntax-text-color)">)</span>
<span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">input</span><span style="color:var(--syntax-text-color)">()</span>
<span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"Description of the job they want: </span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-text-color)">user_input</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-string-color)">"</span>
<span style="color:var(--syntax-declaration-color)">while</span> <span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">not</span> <span style="color:var(--syntax-error-color)">in</span> <span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-string-color)">"exit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"Exit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"quit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"Quit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"stop"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"Stop"</span><span style="color:var(--syntax-text-color)">]:</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">append</span><span style="color:var(--syntax-text-color)">({</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"user"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-text-color)">})</span><span style="color:var(--syntax-text-color)">completion</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">openai</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">ChatCompletion</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">create</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-text-color)">model</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"gpt-3.5-turbo"</span><span style="color:var(--syntax-text-color)">,</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-text-color)">assistant_response</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">completion</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">choices</span><span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-literal-color)">0</span><span style="color:var(--syntax-text-color)">].</span><span style="color:var(--syntax-text-color)">message</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">content</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">append</span><span style="color:var(--syntax-text-color)">({</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"assistant"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">assistant_response</span> <span style="color:var(--syntax-text-color)">})</span><span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"Mr. Boots: </span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-text-color)">assistant_response</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">input</span><span style="color:var(--syntax-text-color)">()</span><span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">"Mr. Boots: GoodBye"</span><span style="color:var(--syntax-text-color)">)</span>
</code></span></span>

一个简单的开始:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code> ⚡  python app.py              
Please provide your resume or tell me about yourself
My name is Jimmy Jimbert and I worked at McDonalds as a team member from Jan 10 2022 to now. I did all of the jobs there. 
What job do you want?
I would like to be a bank teller. 
Mr. Boots: Great, Jimmy! It sounds like you have experience working in a customer service-oriented role, which is helpful when working as a bank teller. Can you please provide more information about your responsibilities at McDonald's, especially those that could be transferable to a bank teller role, such as handling financial transactions, upholding high levels of accuracy and attention to detail, and working as a team with colleagues and customers? Additionally, do you have any experience handling cash efficiently and accurately? Finally, do you have any additional education or certification related to banking or finance that may be relevant for a bank teller role?
exit
Mr. Boots: GoodBye
</code></span></span>

首先,这对我来说似乎是一个很好的开始。人工智能助理已经掌握了一些与这两个职位相关的活动,例如现金处理和准确性。这是我们希望它做的核心事情。

我们还需要进行一些更改,例如我们将助理响应的格式保留为来自“布茨先生”哈哈哈。

其次,很明显,我们需要一种更好的方式来为助理提供我们的简历。粘贴多行文本块的工作量大于它的价值,因此最好只让它加载一个名为resume.txt. 的职位描述也是如此jd.txt。当我们继续采取进一步措施时,这项工作也不会浪费。

让我们制作这些文件进行测试。我会继续努力让吉米在银行找到一份工作,但如果你自己在做这件事,你还不如使用你的信息和你正在寻找的工作!

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code># chat_app/resume.txtJimmy JimbertExperience:Old Navy 3/15/2022 - present
Team memberMcDonalds 5/20/2020 - 3/1/2022
Crew member
</code></span></span>

这是我在 Linkedin 上找到的一份银行柜员工作。

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code># chat_app/jd.txtBank TellerPARKWAY BANKLocation: 4106 N Milwaukee Ave.
Chicago, IL. 60641Hours: Tuesday through Friday 9:00 a.m. – 6:00 p.m.
Saturday 7:45 a.m. - 1:00 p.m.
Hours may change based on the needs of the bank, one day off during the week.Parkway Bank is looking for a Full-Time Teller at our Six-Corners Branch in Chicago, IL. We are a locally owned and operated financial institution committed to offering the best in customer service, financial products, and services. We maintain a strong presence in our communities through donations, volunteer work, and education. Come be a part of our growing team!Job Duties:
Responsible for receiving deposits for credit to customer’s deposit and loan accounts (personal and commercial); verifying cash withdrawals and signature endorsements within established limits and securing required approval as necessary; scanning daily work; balancing daily transactions. In addition, tellers are responsible for ensuring quality customer service; maintaining acceptable teller difference records; and referring sales opportunities to the appropriate banking staff. Tellers are required to meet and/or exceed appropriate referral goals and perform other job functions as assigned by supervisor/manager.Requirements:High school diploma, GED or currently pursuing.Three months cash handlingEffective customer service and sales skillsGood math and clerical skillsAbility to effectively communicate (oral and written) with fellow employees and customers.Must be accurate and detail oriented.Ability to work varied hours/days as needed.Proficient using a PC, keyboard, and computer mouse.Basic knowledge of Outlook, Microsoft Word and Excel preferred.Ability to walk, sit, stoop, and stand for long periods of time.Ability to lift, move, push, or pull up to 25 pounds.Parkway Bank is an Equal Opportunity Employer
Minority/Female/Disability/Veteran
</code></span></span>

现在让我们修改我们的 python代码以导入这些文件,摆脱 Boots 先生(你是一只好猫),并在输出中添加一些空格和一些换行符 () 以使内容更具可读性\n

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-comment-color)"># chat_app/app.py
</span>
<span style="color:var(--syntax-error-color)">import</span> <span style="color:var(--syntax-text-color)">openai</span>
<span style="color:var(--syntax-error-color)">import</span> <span style="color:var(--syntax-text-color)">os</span><span style="color:var(--syntax-text-color)">openai</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">api_key</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">os</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">environ</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">get</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">'OPENAI_API_KEY'</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-text-color)">messages</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-text-color)">{</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"system"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"You are a resume review assistant. You will be provided information about a job candidate. that information might be in the form of a formatted resume, or just a sentence about themselves. You also may also receive a description of a job or position sought by the candidate. Your task as the assistant is to prompt the candidate for additional information they could add to their resume to make it better generally, and more well suited for the job they are seeking specifically. Don't shy away from asking and promoting transferable and soft skills."</span><span style="color:var(--syntax-text-color)">},</span>
<span style="color:var(--syntax-text-color)">]</span><span style="color:var(--syntax-declaration-color)">with</span> <span style="color:var(--syntax-text-color)">open</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">"resume.txt"</span><span style="color:var(--syntax-text-color)">)</span> <span style="color:var(--syntax-declaration-color)">as</span> <span style="color:var(--syntax-text-color)">f</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-text-color)">resume</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">f</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">readlines</span><span style="color:var(--syntax-text-color)">()</span>
<span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">append</span><span style="color:var(--syntax-text-color)">({</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"user"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"Candidate information: </span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-string-color)">''</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">join</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-text-color)">resume</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-text-color)">})</span><span style="color:var(--syntax-declaration-color)">with</span> <span style="color:var(--syntax-text-color)">open</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">"jd.txt"</span><span style="color:var(--syntax-text-color)">)</span> <span style="color:var(--syntax-declaration-color)">as</span> <span style="color:var(--syntax-text-color)">f</span><span style="color:var(--syntax-text-color)">:</span><span style="color:var(--syntax-text-color)">jd</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">f</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">readlines</span><span style="color:var(--syntax-text-color)">()</span><span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"Description of the job they want: </span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-string-color)">''</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">join</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-text-color)">jd</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-string-color)">"</span>
<span style="color:var(--syntax-declaration-color)">while</span> <span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">not</span> <span style="color:var(--syntax-error-color)">in</span> <span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-string-color)">"exit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"Exit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"quit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"Quit"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"stop"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"Stop"</span><span style="color:var(--syntax-text-color)">]:</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">append</span><span style="color:var(--syntax-text-color)">({</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"user"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-text-color)">})</span><span style="color:var(--syntax-text-color)">completion</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">openai</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">ChatCompletion</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">create</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-text-color)">model</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-string-color)">"gpt-3.5-turbo"</span><span style="color:var(--syntax-text-color)">,</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-error-color)">=</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-text-color)">assistant_response</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">completion</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">choices</span><span style="color:var(--syntax-text-color)">[</span><span style="color:var(--syntax-literal-color)">0</span><span style="color:var(--syntax-text-color)">].</span><span style="color:var(--syntax-text-color)">message</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">content</span><span style="color:var(--syntax-text-color)">messages</span><span style="color:var(--syntax-text-color)">.</span><span style="color:var(--syntax-text-color)">append</span><span style="color:var(--syntax-text-color)">({</span><span style="color:var(--syntax-string-color)">"role"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"assistant"</span><span style="color:var(--syntax-text-color)">,</span> <span style="color:var(--syntax-string-color)">"content"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-text-color)">assistant_response</span> <span style="color:var(--syntax-text-color)">})</span><span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">f</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-literal-color)">\n</span><span style="color:var(--syntax-string-color)">Assistant:</span><span style="color:var(--syntax-literal-color)">\n</span><span style="color:var(--syntax-string-color)">{</span><span style="color:var(--syntax-text-color)">assistant_response</span><span style="color:var(--syntax-string-color)">}</span><span style="color:var(--syntax-literal-color)">\n</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-text-color)">user_input</span> <span style="color:var(--syntax-error-color)">=</span> <span style="color:var(--syntax-text-color)">input</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">"User:</span><span style="color:var(--syntax-literal-color)">\n</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-text-color)">)</span><span style="color:var(--syntax-declaration-color)">print</span><span style="color:var(--syntax-text-color)">(</span><span style="color:var(--syntax-string-color)">"Assistant: GoodBye"</span><span style="color:var(--syntax-text-color)">)</span>
</code></span></span>

当我们试一试时:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>⚡  python app.pyAssistant:
Thank you for sharing your experience, Jimmy. Based on the requirements listed for the Bank Teller position at Parkway Bank, here are some potential areas you could add to your resume to make it more relevant to the job:- Highlight your experience with cash handling, as it is an important requirement for the job.
- Include any instances where you excelled in customer service, as providing quality customer service is one of the main responsibilities of a bank teller.
- Be sure to mention your proficiency with basic computer programs such as Microsoft Word and Excel, as well as your ability to learn new systems quickly.
- Detail how you have been able to work varied hours or extended shifts in the past, as this is a requirement for the position.
- Are there any sales or referral goals you have met in previous jobs? If so, including that information on your resume would be helpful since tellers are expected to refer sales opportunities to the appropriate staff at Parkway Bank.Additionally, Parkway Bank seeks individuals who are detail oriented and possess good math and clerical skills. Can you think of any instances where you have been especially detail-oriented or when you have had to use your math skills on the job? These could be good examples to include on your resume.User:
Im really great and really qualified in all of those things.  add them to my resume and show me what that resume would look like. Assistant:
Certainly, Jimmy! Here's a revised version of your resume that incorporates your qualifications, experience, and the requirements from the job description:**Jimmy Jimbert****Experience**Old Navy | Team Member | 3/15/2022 - Present- Assisted customers with product inquiries, fitting room requests, and checkout procedures.
- Maintained store appearance by restocking merchandise and organizing displays.McDonald's | Crew Member | 5/20/2020 - 3/1/2022- Prepared food and drinks, operated cash register, maintained cleanliness of the restaurant.
- Provided exceptional customer service and resolved customer concerns.**Education**High School Diploma | XYZ High School | Graduated June 2020**Skills**- Cash handling: Proficient in accurately counting, verifying, and processing cash transactions.
- Customer service: Able to provide friendly, efficient service and resolve customer concerns.
- Sales and referral: Consistently met or exceeded sales goals and referred opportunities to appropriate staff.
- Math and clerical skills: Possess strong skills in performing basic math calculations and maintaining accurate records.
- Computer proficiency: Proficient in using Microsoft Word, Excel, and Outlook.
- Detail-oriented: Meticulous when handling customer transactions and maintaining records.
- Flexible: Able to work varied hours and days as needed.I hope this helps! Let me know if there's anything else I can do for you.User:
exit
Assistant: GoodBye
</code></span></span>

好吧,这很整洁。它能够填补吉米的典型经验,并以我认为大多数人都可以声称的方式触及所有要求,而不会感觉自己在撒谎。

接下来我们将把这个应用程序部署到云端!

 

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

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

相关文章

python可以用什么软件编写,用python写的软件有哪些

这篇文章主要介绍了python可以用什么软件编写&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 1、python一般用什么软件 《Python 3.9.7软件》百度网盘资源免费下载: 链接: ?p…

AI焦虑潮下,打工人的抵抗、转向、破局

一股“AI让人下岗”的焦虑&#xff0c;正在蔓延&#xff0c;蔓延到了 这里。 不同于区块链、元宇宙和web3&#xff0c;2023年的这股AI浪潮真正席卷了所有人——在大厂、大佬和投资人们为船票激烈角逐的同时&#xff0c;Midjouney、ChatGPT、Notion AI等工具的惊人效果&#xff…

关于 ChatGPT 的 AI 竞争对手 Google Bard,你需要了解什么

Google Bard 是ChatGPT主导力量的最大竞争对手。顾名思义&#xff0c;Bard 来自科技巨头谷歌&#xff0c;以其巨额资金、永无止境的用户数据来源以及数百种应用程序、工具和软件作为后盾。 虽然该产品才公开发布几个月&#xff0c;但它已经进行了一次重大更新&#xff0c;推出…

隐私计算头条周刊(2.27-3.5)

开放隐私计算 收录于合集 #企业动态46个#周刊合辑46个#政策聚焦39个#隐私计算93个#行业研究38个 开放隐私计算 开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神&#xff0c;专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的…

AI、机器学习、大模型、生成式 AI 和安全

目录 1. AI、机器学习、大模型、生成式 AI 和安全1.1. 前言1.2. 人工智能(AI)1.3. 机器学习1.4. 大模型(LLM)1.5. ChatGPT1.6. 总结 1. AI、机器学习、大模型、生成式 AI 和安全 1.1. 前言 最近 ChatGPT 很火, 安全圈有不少大咖们写了文章介绍 ChatGPT 和安全, 感觉都说 Chat…

ChatGPT的前世今生,到如今AI领域的竞争格局,本文带你一路回看!

73年前&#xff0c;“机器思维”的概念第一次被计算机科学之父艾伦图灵&#xff08;Alan Turing&#xff09;提出&#xff0c;从此&#xff0c;通过图灵测试成为了人类在AI领域为之奋斗的里程碑目标。 73年后的今天&#xff0c;在AI历经了数十年的不断进化、迭代后&#xff0c…

科大讯飞:10月24日发布通用大模型,全面对标ChatGPT;GPT-4 API全面开放使用;Bun 0.6.13发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

【粉丝专享福利】联合6大博主送出18本ChatGPT扫盲教程实体书,文末有惊喜

文末一口气赠书18本&#xff0c; 这次就让你high个够。 人工智能技术的发展已经逐渐改变了我们的生活和工作方式&#xff0c;其中&#xff0c;语言模型技术是近年来关注度很高的一个领域。在这个领域&#xff0c;ChatGPT是一个备受瞩目的产品&#xff0c;它不仅是一个聊天程序…

商汤版ChatGPT「商量」来了!开放API,基于千亿参数大模型,体验实录在此

国产ChatGPT之战&#xff0c;已然是大步迈进白热化阶段。 就在刚刚&#xff0c;商汤正式发布自研类ChatGPT产品&#xff0c;名曰商量&#xff08;SenseChat&#xff09;。 单单是这个名字&#xff0c;便值得说道一番。 商量的“商”&#xff0c;不仅体现了它是商汤自家“商字…

ChatGPT在App Store累计下载量已突破50万次;Anthropic已成功完成4.5亿美元C轮融资

&#x1f680; OpenAI的ChatGPT应用在苹果App Store上线6天时间内&#xff0c;累计下载量已突破50万次。 OpenAI的ChatGPT应用在苹果App Store上线6天时间内&#xff0c;累计下载量已突破50万次。 与微软必应等聊天机器人相比&#xff0c;其热度远超过且持续上升。 &#x1…

Web3中文|太心急!谷歌匆忙上线自家“ChatGPT”导致市值蒸发逾千亿美元

谷歌想证明它可以在AI竞赛中与微软抗衡&#xff0c;创建一个新的人工智能搜索引擎&#xff0c;但一个错误回答最终导致母公司 Alphabet 的市场损失超过千亿美元。 低开低走的美股市场 周三&#xff0c;美股三大指数低开低走。道琼斯指数收盘下跌207.68点&#xff0c;跌幅0.61%…

类ChatGPT应用Cohere拟募资数亿美元 估值或超60亿美元

雷递网 乐天 2月7日 ChatGPT的大火&#xff0c;不仅让谷歌、百度大受紧张&#xff0c;紧急推出产品&#xff0c;创业公司的类ChatGPT也受到追捧。 据外媒披露&#xff0c;与微软支持的OpenAI 竞争的AI基础模型公司Cohere正商谈在一轮融资中筹集数亿美元&#xff0c;估值可能超过…

Python对阿里巴巴、谷歌、腾讯等六家公司股票数据进行分析与可视化实战(附源码 超详细)

需要源码请点赞关注收藏后评论区留言私信~~~ 下面针对阿里巴巴、谷歌、亚马逊、Facebook、苹果和腾讯六家公司股票数据进行了分析与可视化描述&#xff0c;数据分析前需要安装互联数据获取包pandas-datareader 先使用conda安装&#xff1a; 1&#xff09;python3环境 2&#xf…

谷歌向ChatGPT对手投4亿美元 后者来自OpenAI团队 估值50亿美元

雷递网 雷建平 2月5日 Alphabet Inc. 旗下谷歌已向人工智能初创公司Anthropic投资近4亿美元&#xff0c;Anthropic被视为是OpenAI开发的机器人应用ChatGPT的竞争对手。 Anthropic将使用谷歌的云计算服务。这笔交易标志着一家科技巨头与一家人工智能初创公司的最新联盟——生成人…

当ChatGPT遇到网络安全

ChatGPT&#xff1a;是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人类一样来聊天交流&#xff0c;甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。GPT 是 …

在ROS中使用tensorflow进行人体姿态识别

原连接&#xff1a;https://community.bwbot.org/topic/497 运行测试平台:小强ROS机器人 body_pose 是一个人体姿态识别的软件包。这个软件包可以从图片中识别出人体的耳朵&#xff0c;眼睛&#xff0c;鼻子&#xff0c;四肢的共17个特征点。其实现是通过深度学习网络利用tens…

邹小强老师的个人目标管理分享课

有幸在公司参加了邹小强老师的目标管理培训课很有感触&#xff0c;写个笔记同时也给大家简单分享目标管理的一些方法和误区。附一位大神的思维导图整理。 制定目标的三个好处 1、成就感满足感 2、想法—>行动 3、充分利用时间 年度目标实现不了的四个原因 1、假&#xff…

使用xiaoqiang_track进行人体跟随和追踪

原链接: https://community.bwbot.org/topic/500 运行测试平台:小强ROS机器人 xiaoqiang_track xiaoqiang_track是一个利用摄像头捕捉的图像进行人体追踪的程序。它有比较好的稳定性,能够可靠的追踪目标。同时也具有比较好的扩展性。可以方便的对关键的追踪算法进行调整。在运…

小强统一认证中心-部署实例

前言 在前文章中介绍了&#xff0c;认证中心以及工程项目介绍。 相关文章 统一认证中心简介认证中心-项目工程介绍 本文主要讲解如何部署起来。首先简单的本地部署来-模拟使用认证中心统一认证。 文中附录示例工程源码地址 先上个先行图&#xff0c;登录了认证中心就相当…

小强统一认证中心-项目工程介绍

统一认证中心-项目工程介绍 在 上一篇文章 介绍了小强统一认证中心的功能点。本文主要讲解项目工程 相关文章 统一认证中心简介多平台部署实例 1.源码地址 源码地址&#xff1a;传送门 2.后端工程介绍 2.1工程模块介绍 工程模块名称备注sso-auth-center-service父工程定义…