2023年6月

Ubuntu 将发布纯 Snap 版的不可变 Linux

近些年不可变操作系统的概念开始流行,这种操作系统不能被用户或应用程序直接修改,采用原子式更新,应用通过容器化与操作系统隔离。一些流行的不可变操作系统有 Chrome OS、Fedora Silverblue 等。Canonical 计划将下一个 Ubuntu LTS 分为两个版本,除了传统版本外,还将有一个不可变的桌面操作系统版本。它基于其用于物联网环境的 Ubuntu Core,并且全部采用 Snap 来封装桌面应用以提供不可变性和更新需求的之间的平衡。

消息来源:Ubuntu
老王点评:听起来不错,对于那些需要不可变系统的人来说值得关注。不过,Snap 有多少指责,Canonical 不知道吗?如果不解决好了就推这种纯 Snap 版本,我恐怕它会陷入败局。

数百万技嘉主板出厂时内置不安全的后门

安全研究人员发现,技嘉出售的主板固件含有一个隐藏的机制。每当计算机重启时,固件代码会启动一个更新程序,然后下载和执行另一个软件,以保持主板固件更新。但技嘉的更新机制没有正确验证就下载代码到用户计算机上,部分情况下甚至是通过 HTTP 而不是 HTTPS 下载的,这容易遭到中间人攻击。受到影响的技嘉主板多达 271 个型号,其数量数以百万计。技嘉已经表示它计划修复研究人员发现的问题。

消息来源:Wired
老王点评:即便发布了新修复的固件,但是绝大部分人都不会主动去更新固件,也就是说,这个漏洞带来的影响可能很久都难以消除。只能说,有些产品设计人员还处在“隐秘就是安全”的远古思维。

Brave 浏览器用户每天为其添加数以百万计的新网页

Brave 声称,其独立的 Brave 搜索引擎现在提供超过每年 80 亿次的查询,这使其成为自微软必应以来增长最快的搜索引擎。另外,Brave 浏览器用户可选加入的 “网络发现项目” 为其提供了动力,该项目每天向 Brave 搜索引擎添加数以百万计的新网页,使其保持更新。Brave 网络浏览器现在有超过 6000 万活跃用户。

消息来源:Thurrott
老王点评:这样看起来浏览器和搜索引擎真是天作之合啊,通过用户的浏览行为来为搜索引擎提供索引建议,要比网络爬虫漫无目的的爬取更有质量。

以下是如何使用 OpenAI ChatGPT AI 创建聊天助手的 Python 程序的方法。

易于使用的 AI “ChatGPT” 已经以 API 提供。ChatGPT 的创造者 OpenAI 宣布,模型('gpt-3.5-turbo')现在适用于自定义产品和解决方案。而且成本也非常实惠。目前的价格为每 1000 个令牌 0.002 美元。

该模型目前与 Whisper API 一起提供,后者也用于文本到语音解决方案。该 API 目前具备以下功能:

  • 创建自定义的对话代理和机器人
  • 为你编写 Python 代码
  • 起草电子邮件或任何你想要的文档
  • 你可以将自然语言界面集成到你当前的产品/应用/服务或软件中,为你的消费者提供服务
  • 语言翻译服务
  • 成为许多科目的导师
  • 模拟视频游戏角色

正如你所见,机会无限。

如果你计划尝试该 API 并开始使用它,这里有一个简单的指南,为你提供逐步指导。

OpenAI ChatGPT API: 入门指南

先决条件

确保你拥有一个 OpenAI 账户。如果你没有,访问此页面 并创建一个账户。你也可以使用你的谷歌或微软账号。

创建一个账户后,生成一个专属于你的 API 密钥。访问 此页面 并创建一个新的秘密密钥。

创建 OpenAI API 密钥的位置

记录该密钥或在安全的地方保存它。基于安全原因,它将不会从 OpenAI 账户部分再次可见。而且不要与任何人分享此密钥。如果你计划使用企业解决方案,请向你的组织查询 API 密钥。由于该密钥与你的付费 OpenAI 计划相关,因此请谨慎使用。

设置环境

安装 Python 和 pip

本指南使用 Python 编程语言来调用 OpenAI API 密钥。你可以使用 Java 或其他任何语言来调用它。

首先,请确保你在 Linux 或 Windows 中已经安装了 Python。如果没有,请按照以下指南安装 Python。如果你使用现代 Linux 发行版(例如 Ubuntu),Python 应该已经安装好了。

在安装 Python 后,确保 pip 在 Linux 发行版中可用。运行以下命令进行安装。对于 Windows,你应该已经在 Python 安装的一部分中安装了它。

Ubuntu、Debian 和其他基于 Debian 的发行版:

sudo apt install python3-pip

Fedora、RHEL、CentOS 等:

sudo dnf install python3-pip

Arch Linux:

sudo pacman -S python-pip

将 OpenAI API 密钥设置为环境变量

上述步骤中创建的 API 密钥,你可以直接在程序中使用。但这并不是最佳实践。

最佳实践是从文件或你系统的环境变量中调用它。

对于 Windows,请设置一个任何名字的环境变量,例如 API-KEY。并添加密钥值。

对于 Linux,请使用超级用户权限打开 /etc/environment 文件并添加密钥。例如:

API-KEY="<你的密钥>"

对于基于文件的密钥访问,请在你的代码中使用以下语句:

openai.api_key_path = <你的 API 密钥路径>

对于直接在代码中访问(不建议),你可以在你的代码中使用以下语句:

openai.api_key = "你的密钥"

注意:如果验证失败,OpenAI API 将抛出以下错误。你需要验证你的密钥值、路径和其他参数以进行更正:openai.error.AuthenticationError: No API key provided

安装 OpenAI API

最后一步是安装 OpenAI 的 Python 库。打开终端或命令窗口,使用以下命令安装 OpenAI API。

pip install openai

在此阶段,你已经准备好撰写你的第一个程序了!

编写助手程序(逐步)

OpenAI API 提供了各种接口模式。例如“聊天补完”、“代码补完”、“图像生成”等。在本指南中,我将使用 API 的“聊天补完”功能。使用此功能,我们可以创建一个简单的对话聊天机器人。

首先,你需要导入 OpenAI 库。你可以使用以下语句在你的 Python 程序中完成:

import openai

在这个语句之后,你应该确保启用你的 API 密钥。你可以使用上面解释的任何方法来完成。

openai.api_key="your key here"
openai.api_key="your environment variable"
openai.api_key_path = <your path to API key>

OpenAI 聊天 API 的基本功能如下所示。openai.ChatCompletion.create 函数以 JSON 格式接受多个参数。这些参数的形式是 “角色”(role) 和 “内容”(content):

openai.ChatCompletion.create(   
  model = "gpt-3.5-turbo",   
  messages = [         
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Who won the world series in 2020?"},
    {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
    {"role": "user", "content": "Where was it played?"}     
  ]
)

说明:

role: 有效的值为 systemuserassistant

  • system: 指示 API 如何行动。基本上,它是 OpenAI 的主提示。
  • user: 你要问的问题。这是单个或多个会话中的用户输入。它可以是多行文本。
  • assistant: 当你编写对话时,你需要使用此角色来添加响应。这样,API 就会记住讨论的内容。

注意:在一个单一的消息中,你可以发送多个角色。如上述代码片段所示的行为、你的问题和历史记录。

让我们定义一个数组来保存 OpenAI 的完整消息。然后向用户展示提示并接受 system 指令。

messages = []
system_message = input("What type of chatbot you want me to be?")
messages.append({"role":"system","content":system_message})

一旦设置好了,再次提示用户进行关于对话的进一步提问。你可以使用 Python 的 input 函数(或任何其他文件输入方法),并为角色 user 设置 content

print("Alright! I am ready to be your friendly chatbot" + "\n" + "You can now type your messages.")
message = input("")
messages.append({"role":"user","content": message})

现在,你已经准备好了具有基本 JSON 输入的数组,用于调用“聊天补完”服务的 create 函数。

response=openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=messages)

现在,你可以对其进行适当的格式化,要么打印响应,要么解析响应。响应是以 JSON 格式提供的。输出响应提供了 choices 数组。响应在 message JSON 对象下提供,其中包括 content 值。

对于此示例,我们可以读取 choices 数组中的第一个对象并读取其 content

reply = response["choices"][0]["message"]["content"]
print(reply)

最后,它将为你提供来自 API 的输出。

运行代码

你可以从你的 喜好的 Python IDE 或直接从命令行运行代码。

python OpenAIDemo2.py

未格式化的 JSON 输出

以下是使用未格式化的 JSON 输出运行上述程序供你参考。正如你所看到的,响应在 choices 数组下具有 content

[debugpoint@fedora python]$ python OpenAIDemo2.py
What type of chatbot you want me to be?a friendly friend
Alright! I am ready to be your friendly chatbot
You can now type your messages.
what do you think about kindness?
{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "As an AI language model, I don't have personal opinions, but I can tell you that kindness is a very positive and essential trait to have. Kindness is about being considerate and compassionate towards others, which creates positive emotions and reduces negativity. People who are kind towards others are more likely to inspire kindness and compassion in return. It is an important quality that helps to build positive relationships, promote cooperation, and create a more peaceful world.",
        "role": "assistant"
      }
    }
  ],
  "created": <removed>,
  "id": "chatcmpl-<removed>",
  "model": "gpt-3.5-turbo-0301",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 91,
    "prompt_tokens": 22,
    "total_tokens": 113
  }
}

格式化的输出

这是一个适当的对话式输出。

[debugpoint@fedora python]$ python OpenAIDemo2.py
What type of chatbot you want me to be?a friendly friend
Alright! I am ready to be your friendly chatbot
You can now type your messages.
what do you think about artificial general intelligence?
As an AI language model, I am programmed to be neutral and not have personal opinions. However, artificial general intelligence (AGI) is a fascinating field of study. AGI refers to the development of machines and algorithms that can perform any intellectual task that a human being can. The potential benefits and risks of AGI are still widely debated, with some experts worried about the implications of machines reaching human-like intelligence. However, many believe that AGI has the potential to revolutionize fields such as healthcare, education, and transportation. The key is to ensure that AGI is developed in a responsible and ethical manner.

完整代码

这是上面演示中使用的完整代码。

import openai

openai.api_key = "<your key>"
messages = []
system_message = input("What type of chatbot you want me to be?")
messages.append({"role":"system","content":system_message})

print("Alright! I am ready to be your friendly chatbot" + "\n" + "You can now type your messages.")
message = input("")
messages.append({"role":"user","content": message})

response = openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=messages
)

reply = response["choices"][0]["message"]["content"]
print(reply)

总结

希望这篇简单的指南能让你开始尝试 OpenAI CharGPT API。你可以将上述步骤扩展到更复杂的会话式聊天机器人。此外,你还可以使用 OpenAI 的其他产品。

请不要错过我后续的教程,我将会实验和分享给大家。最后,请不要忘记关注我们,以便及时获取我们的文章。

如果上述步骤对你有帮助,请在评论框中告诉我。

干杯!

参考资料

(题图:MJ/b206dd48-f698-4800-bccc-19ea11a17ea6)


via: https://www.debugpoint.com/openai-chatgpt-api-python

作者:Arindam 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

用开放的决策进行设计可以帮助增加用户体验和开发团队之间的合作。

理想情况下,设计师与他们的产品团队和用户有良好的关系。然而,设计师和开发者之间的关系更难建立和维持。缺乏密切的关系使得问题的解决或改进变得困难。

根据我的经验,开源的 开放决策框架 Open Decision Framework 可以克服许多这样的障碍。

开放决策框架宣称,开放式决策 是透明的、包容的、以客户为中心的。它包括与受影响的各方清楚地分享问题、要求和限制。它能够与多个利益相关者合作,以确保不同的意见和全面的反馈。最重要的是,它能在相互竞争的需求和优先事项之间管理关系和期望。

这些原则可能会引起任何参与设计产品、功能或服务的决策的人的共鸣。对于一个设计师来说,开发人员是做出最佳设计决策的关键利益相关者。如果你是一个设计师,现在是时候接受获得不同意见的机会了。

后台和用户体验

开发人员是关键的利益相关者,因为用户的产品或服务体验不仅仅是屏幕上的像素或工作流程的设计。它包含了服务的性能、API 调用的速度、处理用户数据的方式,甚至是数据的可扩展性设计。当他们被认为是设计中的完全利益相关者时,开发者可以贡献他们在服务的后端和架构方面的专业知识,以协助整体的体验设计。

用户体验(UX)设计师是开发团队所负责的项目的利益相关者。性能上的不足,或者架构对可用数据的影响,都会阻碍用户体验。一个开放的、开发和设计之间的合作关系 允许在所有领域的信任和透明。

为合作留出空间

开发者和设计之间的开放和透明的关系并不像它应该的那样普遍。这种工作方式对双方来说可能都是新的。以下是我为使合作成功而提出的五大建议:

  1. 建立一个经常性的合作时间:为设计和开发建立一个经常性的时间,在每周到每月一次之间进行会面。邀请的对象至少应该包括 UX、主导工程和质量工程。理想情况下,如果日程安排允许,团队中的所有开发人员都应该被邀请参加。
  2. 使分享成为主要议程: UX 应该分享他们目前正在进行的用例和功能,以及任何相关的用户研究数据。UX 设计师应该向开发团队展示工作流程设计、线框图和高保真模拟图。开发应该分享他们这边做出的任何可能影响用户体验的设计决定。
  3. 鼓励提问: 合作是最理想的情况。鼓励所有与会者提出问题并给予反馈。对问题的回答和对反馈的回应是讨论设计和方向的机会,也是一个相互学习的机会。
  4. 拥抱学习的心态:避免说教或“告诉”。相反,目的是互相学习。利用彼此的专业知识,为用户和客户设计和建立一个良好的体验。要求对不熟悉的技术或概念进行解释。
  5. 考虑正式学习:当群体说着相同的语言时,合作关系会更容易。考虑正式的学习途径,例如:

    • 设计人员:编码基础课程,如开源的 Odin 项目,对于学习服务的构造和构建的基本原理是有帮助的。
    • 开发人员:对 UX 原则的理解可以帮助指导问题和反馈。你可以在 UX 设计原则或各种书籍和文章中找到一个很好的概述。

一个开放合作的例子

在与我团队中的一个开发人员进行的早期设计审查中,我展示了一个具体的交互,以显示关于一个物体的更多数据。我传达了用户的需求并演示了这个交互,这时开发者问道:“是否需要完全以这种方式来完成?”

他提到,只要在设计上稍加改动,开发的工作量就会大大降低。我们同意,这些改变不会对用户体验产生负面影响,而且用户仍然能够实现他们的目标。

这种反馈节省了开发团队的时间,留下了更多的机会来解决错误,建立额外的功能,并保持健康的工作和生活的平衡。用户体验依然强劲,而团队则更加强大。如果没有一个与我有深厚工作关系的开发者的早期反馈,这个结果是不可能的。

你的下一步

建立体验是由一个合作的团队做出的一系列决定。产品、设计和开发需要作为各自领域的专家和其他人的利益相关者一起工作。我鼓励你让开发和设计参与进来,以获得更多的合作反馈,并一起努力创造出具有最佳用户体验的最佳产品。

(题图:MJ/f8f89c47-821a-4327-aa18-9483633aef50)


via: https://opensource.com/article/23/4/designers-developers-collaborate

作者:Katie Riker 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出