Golang/Python 调用 openAI 的API 详解

学习目标:

  • OpenAI API介绍

  • 学习如何通过 Golang 使用 OpenAI 的 API

  • OpenAI 的常用的参数及其说明

  • 了解OpenAI API 中令牌(tokens)

  • OpenAI API 提供了几个不同的终端点(endpoints)和模式(modes)

  • 复杂和实际应用的例子


学习内容:

  》OpenAI API介绍:

OpenAI API 是由 OpenAI 提供的一项服务,它允许开发者通过编程方式与 OpenAI 的强大自然语言处理模型进行交互。这些模型基于深度学习技术,可以用于各种任务,包括文本生成、自动摘要、翻译、对话生成等。

以下是关于 OpenAI API 的一些重要说明:

  1. 模型:OpenAI API 基于 GPT(生成式预训练)架构,提供了多个预训练的语言模型,如 GPT-3、GPT-2 等。这些模型在大规模数据集上进行了训练,以提供强大的文本生成和理解能力。

  2. 访问方式:你可以通过发送 HTTP 请求到 OpenAI API 来与模型进行交互。API 支持多种编程语言和开发环境,你可以使用 HTTP 客户端库发送请求,并通过 API 提供的终端点进行文本生成和其他任务。

  3. 授权和身份验证:在使用 OpenAI API 之前,你需要获得一个 API 密钥,并将其用作身份验证的凭证。通过在请求头中添加身份验证标头,你可以将 API 密钥传递给 OpenAI API 以进行身份验证。

  4. 请求和参数:你可以通过在请求体中提供适当的参数来指定所需的任务和模型行为。例如,你可以提供一个提示(prompt)来启动文本生成,或者指定生成的最大长度、温度等参数。

  5. 付费:OpenAI API 是一项付费服务。使用 API 进行文本生成和其他操作会消耗资源,并按照 OpenAI 的定价模型进行计费。确保在使用 API 之前了解相关的定价和费用信息。

请注意,OpenAI 可能会更新其 API 的功能、定价和可用性,并且可能有特定的使用规则和限制。建议你查阅 OpenAI 的官方文档以获取最新的 API 说明和相关细节。

》学习如何通过 Golang 使用 OpenAI 的 API:

若要在 Golang 中调用 OpenAI 的 API,你可以遵循以下步骤:

1. 安装所需的库

首先,你需要安装 `go` 的 HTTP 请求库,例如 `net/http` 或 `github.com/go-resty/resty`。使用以下命令之一安装所需的库:

   
   go get -u net/http
   go get -u github.com/go-resty/resty
   

2. 获取 OpenAI API 密钥:

要获取 OpenAI API 密钥,你需要访问 OpenAI 的官方网站并注册一个账号。一旦注册成功,你可以按照以下步骤获得 API 密钥:

  1. 登录到 OpenAI 官方网站:打开 OpenAI 官方网站并使用你的注册账号登录。

  2. 导航到 API 部分:在登录后,导航到 OpenAI 网站的 API 部分。你可以查找和访问有关 API 的相关文档和信息。

  3. 创建 API 密钥:按照指示创建一个新的 API 密钥。这通常涉及提供你的身份验证信息和相关的开发项目信息。

  4. 获取 API 密钥:一旦你完成 API 密钥的创建,OpenAI 将向你提供一个唯一的 API 密钥。这个密钥通常是一个字符串,你需要在调用 OpenAI API 时使用它来进行身份验证。

请注意,上述步骤是一般性的指导,实际的过程可能因 OpenAI 官方网站的更新或变化而有所不同。对于中车或其他特定组织,你可能需要遵循他们的特定流程或与他们的相关团队联系以获取 OpenAI API 密钥。

3. 创建 HTTP 请求:

在 Golang 中,你可以使用上述库之一创建 HTTP 请求。以下是使用 `net/http` 库的示例代码:

 package mainimport ("fmt""io/ioutil""net/http")func main() {apiKey := "YOUR_OPENAI_API_KEY"url := "https://api.openai.com/v1/engines/davinci-codex/completions"reqBody := `{"prompt": "Hello, world!","max_tokens": 10}`req, err := http.NewRequest("POST", url, bytes.NewBuffer([]byte(reqBody)))if err != nil {fmt.Println("Error creating request:", err)return}req.Header.Set("Authorization", "Bearer "+apiKey)req.Header.Set("Content-Type", "application/json")client := &http.Client{}resp, err := client.Do(req)if err != nil {fmt.Println("Error sending request:", err)return}defer resp.Body.Close()respBody, err := ioutil.ReadAll(resp.Body)if err != nil {fmt.Println("Error reading response:", err)return}fmt.Println("Response:", string(respBody))}

   在上述代码中,将 `YOUR_OPENAI_API_KEY` 替换为你自己的 OpenAI API 密钥。`reqBody` 定义了请求的 JSON 数据,其中包括提示和生成的最大令牌数。根据你的需求进行相应的更改。

4. 发送请求并处理响应:

通过调用 `client.Do(req)` 来发送请求,并使用 `ioutil.ReadAll` 读取响应的内容。你可以根据需要进行进一步的处理和解析。

请注意,这只是一个基本的示例代码,供你了解如何在 Golang 中调用 OpenAI 的 API。根据 OpenAI API 的具体要求和功能,你可能需要进行更多的配置和参数设置。确保查阅 OpenAI API 的文档以了解更多详细信息,并根据需要进行适当的调整。

》OpenAI 的常用的参数及其说明

1. OpenAI API 一些常用的参数及其说明:

1. `engine`(string):指定要使用的模型引擎,如 "davinci"、"curie" 或 "gpt-3.5-turbo"。不同的模型引擎具有不同的性能和能力。

2. `prompt`(string):用于提示模型生成文本的起始内容。可以提供一个或多个句子作为提示。

3. `max_tokens`(int):限制生成文本的最大令牌数。令牌是模型处理文本的基本单位。通过控制令牌数量,可以控制生成文本的长度。

4. `temperature`(float):控制生成文本的多样性。较高的温度值(大于1.0)会使输出更随机和多样化,而较低的温度值(小于1.0)会使输出更加确定和一致。

5. `max_response_length`(int):限制生成响应的最大长度(以字符为单位)。可以使用此参数截断生成的文本,以避免返回过长的响应。

6. `stop`(string 或数组):指定一个或多个字符串作为停止标记,当模型生成包含停止标记的文本时,会停止生成并返回结果。

7. `n`(int):指定要生成的候选响应数量。模型会生成多个可能的响应,并根据其概率进行排序。默认情况下,`n` 的值为1,即返回最高概率的响应。

这些是 OpenAI API 中常用的一些参数,用于控制模型的行为和生成的文本输出。你可以根据你的具体需求和任务进行适当的参数设置。请注意,不同的模型可能支持不同的参数,具体的参数设置和默认值可能会有所不同。建议查阅 OpenAI 的官方文档以获取最新的参数说明和相关细节。

2. Golang 调用 OpenAI API 并设置所有参数:

示例代码的方式进行操作:

package mainimport ("fmt""log""os"openai "github.com/openai/openai-go/v2"
)func main() {apiKey := "YOUR_API_KEY"openai.SetAPIKey(apiKey)engine := "davinci"prompt := "Once upon a time"maxTokens := 50temperature := 0.8maxResponseLength := 200stop := []string{"\n", "The end"}n := 5// 创建 OpenAI 请求req := &openai.CompletionRequest{Model:           engine,Prompt:          &prompt,MaxTokens:       &maxTokens,Temperature:     &temperature,MaxResponseSize: &maxResponseLength,Stop:            stop,N:               &n,}// 发送请求并获取响应client := openai.NewCompletionClient()response, err := client.CreateCompletion(req)if err != nil {log.Fatal(err)}// 解析响应并获取生成的文本generatedTexts := make([]string, len(response.Choices))for i, choice := range response.Choices {generatedTexts[i] = choice.Text}// 输出生成的文本fmt.Println(generatedTexts)
}

在上述示例代码中,将 `YOUR_API_KEY` 替换为你自己的 OpenAI API 密钥。然后,你可以根据你的需求设置 `engine`、`prompt`、`maxTokens`、`temperature`、`maxResponseLength`、`stop` 和 `n` 参数的值。

使用 OpenAI 的 Go SDK(`openai-go`),我们可以创建一个 `CompletionRequest` 对象,并将参数设置为该对象的字段。然后,我们通过调用 `CreateCompletion()` 方法来发送请求并获取响应。

最后,我们解析响应并提取生成的文本,将其存储在 `generatedTexts` 切片中,并输出结果。

请确保在运行示例代码之前,已经使用 `go get` 命令安装了 `openai-go` 包。

》了解OpenAI API 中令牌(tokens):

在 OpenAI API 中,"token" 是指文本的最小处理单位。在语言模型中,文本会被分割成一系列的令牌,每个令牌可以是单词、标点符号、空格或其他字符。模型在生成文本时,实际上是逐个令牌地进行处理和预测。

了解令牌对于使用 OpenAI API 很重要,因为一些 API 参数(如 `max_tokens`)是以令牌数来计算的。通过控制令牌数量,你可以控制生成文本的长度。

你可以使用 OpenAI 的 `tiktoken` Python 包来计算文本中的令牌数量。以下是一个简单的示例代码:

import openai
from openai import tiktokenopenai.api_key = 'YOUR_API_KEY'text = "Hello, how are you?"token_count = tiktoken.count(text)
print("Token count:", token_count)

将 `YOUR_API_KEY` 替换为你的 OpenAI API 密钥。在上述示例中,我们使用 `tiktoken.count()` 函数来计算给定文本中的令牌数量,并打印输出。

另外,OpenAI 还提供了一种查看令牌数量的在线工具,称为 "tiktoken"。你可以在 OpenAI 文档中找到 "tiktoken" 的链接,并使用它来计算任意文本的令牌数量。这个工具对于调试和检查令牌数量非常有用。

1.在 OpenAI API 中,令牌(tokens)的数量通常与 API 的费用相关:

每次调用 API 时,你会被计费的令牌数量取决于你请求的文本输入和模型生成的文本输出。

API 请求的费用基于两个因素:

1. 输入令牌:这是指你发送给 API 的文本输入的令牌数量。通常,较长的输入文本会占用更多的令牌,并因此产生更高的费用。

2. 输出令牌:这是指模型生成的响应文本的令牌数量。生成的文本越长,占用的令牌数量越多,因此会产生更高的费用。

你可以使用 OpenAI 的 `tiktoken` Python 包来计算文本中的令牌数量,以了解你的输入和输出所占用的令牌数量。根据 API 请求中使用的令牌数量,可以在 OpenAI 的定价页面上查看相应的费用详情。

请注意,不同模型和终端点的费用可能会有所不同。此外,OpenAI 可能会根据需求和市场情况调整定价和计费方式。因此,建议查阅 OpenAI 的官方文档和定价信息,以了解最准确和最新的计费细节。

》OpenAI API 提供了几个不同的终端点(endpoints)和模式(modes):

OpenAI API 提供了几个不同的终端点(endpoints)和模式(modes),以满足不同的自然语言处理任务和需求。以下是一些常见的终端点和模式:

1. Completions 终端点:

`davinci`、`curie` 和 `babbage` 是 OpenAI API 中的三个主要模型,每个模型都可以用于生成文本的补全。你可以向 Completions 终端点发送请求,提供一个文本片段作为提示(prompt),然后模型会生成续写或补全的文本。

2. Chat 终端点:

Chat 模式适用于对话生成任务。你可以使用 Chat 终端点构建一个多轮对话系统,与模型进行交互并生成连续的对话响应。你可以提供一个历史消息列表,其中包含之前的对话内容和模型的响应,以便模型了解上下文并生成适当的回复。

OpenAI API 的 Chat 终端点目前提供了三个不同的模型,它们分别是:

1). `gpt-3.5-turbo`:这是 OpenAI API 提供的最新的、最强大的 Chat 模型。它基于 GPT-3.5 架构,具有出色的对话生成能力。该模型在多个任务和应用中表现出色,能够生成连贯、准确的回复。

2). `davinci`:这是之前的 Chat 模型,基于 GPT-3 架构。尽管已经有了更先进的模型(如 gpt-3.5-turbo),但 `davinci` 仍然可以用于对话生成,并提供高质量的回复。

3). `curie`:这是 GPT-3.5-turbo 之前的 Chat 模型,它基于 GPT-3.5 架构。虽然不如 gpt-3.5-turbo 强大,但 `curie` 仍然是一个有效的对话生成模型,并在多个应用中发挥作用。

这些 Chat 模型在不同的对话生成任务中具有广泛的应用,并可以根据你的具体需求选择适当的模型。请注意,随着 OpenAI 不断改进和发布新的模型,可能会有新的模型可用。建议查阅 OpenAI 的官方文档以获取最新的模型列表和相关细节。

3. Translation 终端点:

OpenAI API 还提供了用于机器翻译的终端点。你可以发送一个包含待翻译文本的请求,指定源语言和目标语言,模型将返回翻译后的文本。

这些终端点和模式是 OpenAI API 提供的一些常见选项,用于不同的自然语言处理任务。你可以根据你的需求选择适当的终端点和模式,并根据 API 文档提供的指南来构建请求和解析响应。

请注意,OpenAI 可能会在未来更新和添加更多的终端点和模式,以提供更多功能和灵活性。确保查阅 OpenAI 的官方文档以获取最新的终端点和模式信息,并了解如何正确使用它们。

 4. Golang 调用 OpenAI API 的不同终端点和模式:

你需要构建适当的 HTTP 请求,并发送到相应的终端点。以下是一个示例代码,演示如何在 Golang 中调用 OpenAI API 的 Completions 终端点和 Chat 终端点。

首先,确保你已经安装了 Golang 的 HTTP 请求库,例如 `net/http`。

1. Completions 终端点示例代码:
package mainimport ("bytes""encoding/json""fmt""io/ioutil""net/http"
)func main() {apiKey := "YOUR_OPENAI_API_KEY"url := "https://api.openai.com/v1/engines/davinci-codex/completions"reqBody := map[string]interface{}{"prompt":     "Once upon a time","max_tokens": 50,}reqJSON, err := json.Marshal(reqBody)if err != nil {fmt.Println("Error marshaling request:", err)return}req, err := http.NewRequest("POST", url, bytes.NewBuffer(reqJSON))if err != nil {fmt.Println("Error creating request:", err)return}req.Header.Set("Authorization", "Bearer "+apiKey)req.Header.Set("Content-Type", "application/json")client := &http.Client{}resp, err := client.Do(req)if err != nil {fmt.Println("Error sending request:", err)return}defer resp.Body.Close()respBody, err := ioutil.ReadAll(resp.Body)if err != nil {fmt.Println("Error reading response:", err)return}fmt.Println("Response:", string(respBody))
}

在上述代码中,将 `YOUR_OPENAI_API_KEY` 替换为你自己的 OpenAI API 密钥。`reqBody` 定义了请求的 JSON 数据,包括提示(prompt)和生成的最大令牌数(max_tokens)。根据你的需求进行相应的更改。

2. Chat 终端点示例代码:
package mainimport ("bytes""encoding/json""fmt""io/ioutil""net/http"
)func main() {apiKey := "YOUR_OPENAI_API_KEY"url := "https://api.openai.com/v1/chat/completions"reqBody := map[string]interface{}{"messages": []map[string]string{{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Who won the world series in 2020?"},},}reqJSON, err := json.Marshal(reqBody)if err != nil {fmt.Println("Error marshaling request:", err)return}req, err := http.NewRequest("POST", url, bytes.NewBuffer(reqJSON))if err != nil {fmt.Println("Error creating request:", err)return}req.Header.Set("Authorization", "Bearer "+apiKey)req.Header.Set("Content-Type", "application/json")client := &http.Client{}resp, err := client.Do(req)if err != nil {fmt.Println("Error sending request:", err)return}defer resp.Body.Close()respBody, err := ioutil.ReadAll(resp.Body)if err != nil {fmt.Println("Error reading response:", err)return}fmt.Println("Response:", string(respBody))
}

在上述

代码中,同样需要将 `YOUR_OPENAI_API_KEY` 替换为你自己的 OpenAI API 密钥。`reqBody` 定义了请求的 JSON 数据,其中 `messages` 列表包含了对话的历史消息。你可以根据需要添加更多的消息。

这些示例代码演示了如何使用 Golang 调用 OpenAI API 的不同终端点和模式。你可以根据你的具体需求修改这些代码,并添加适当的错误处理和其他逻辑。记得查阅 OpenAI API 的官方文档,了解请求和响应的详细说明。

》复杂和实际应用的例子:

例子1:

如果你想修改代码以分析指定评论的情感,并将评论内容和情感分析结果打印出来,可以按照以下方式修改代码:

import openaidef analyze_sentiment(comment):# 设置OpenAI API密钥openai.api_key = 'YOUR_API_KEY'# 调用OpenAI GPT-3.5模型进行情感分析response = openai.Completion.create(engine='text-davinci-003',prompt=f"分析以下评论的情感:{comment}\n情感分析结果",max_tokens=1,temperature=0,n=1,stop=None,logprobs=None)# 解析API响应,获取情感分析结果sentiment = response.choices[0].text.strip()return sentiment# 要分析的评论
comment = "这部电影太精彩了!"# 进行情感分析
result = analyze_sentiment(comment)
print(f"评论: {comment}")
print(f"情感分析结果: {result}")

这样修改后,代码将使用指定的评论进行情感分析,并打印出评论内容和情感分析结果。请确保将`YOUR_API_KEY`替换为您的OpenAI API密钥。

例子2:

当使用多个 `#` 符号时,它们可以用于将输入文本分为不同的部分,从而影响模型的生成行为。下面是一个示例:

import openaidef generate_text(prompt):openai.api_key = 'YOUR_API_KEY'response = openai.Completion.create(engine='text-davinci-003',prompt=prompt,max_tokens=50,temperature=0.8,n=1,stop=None,logprobs=None)generated_text = response.choices[0].text.strip()return generated_textprompt = """
输入一句话,让模型继续生成下一句:
#在一个遥远的星系中,
#在宇宙的尽头,
#人类探险家发现了一颗神秘的行星。
"""output = generate_text(prompt)
print(output)

在上述示例中,我们使用了三个 `#` 符号将输入文本分为三个部分。这些部分是:在一个遥远的星系中, 在宇宙的尽头, 人类探险家发现了一颗神秘的行星。模型将从最后一个 `#` 符号之后开始生成文本。例如,生成的文本可能是:


人类探险家发现了一颗神秘的行星。行星上存在着奇特的生物,它们拥有超凡的智慧和力量。人类开始探索这个神秘的行星,希望揭开它的秘密。
 

通过使用多个 `#` 符号,我们可以对模型的生成行为进行一定的控制和引导,从而生成符合我们期望的文本。请注意,示例中的生成结果是根据模型的行为进行估计的,实际结果可能因模型的训练和数据等因素而有所不同。

例子3:

在您提供的例子中,使用了三个 `#` 符号将输入文本分为三个部分。第一个部分是 "分析以下评论的情感:",第二个部分是评论的内容 "这部电影太精彩了!",第三个部分是 "情感分析结果:"。

这种分割的结构可以帮助模型理解您的意图和输入的组织方式。在进行情感分析时,模型将根据给定的评论内容生成与情感相关的文本结果。

以下是一个示例代码,使用您提供的 `prompt` 进行情感分析:

import openaidef analyze_sentiment(comment):openai.api_key = 'YOUR_API_KEY'response = openai.Completion.create(engine='text-davinci-003',prompt=comment,max_tokens=1,temperature=0,n=1,stop=None,logprobs=None)sentiment = response.choices[0].text.strip()return sentimentprompt = """
分析以下评论的情感:
###
这部电影太精彩了!
###
情感分析结果:
"""result = analyze_sentiment(prompt)
print(result)

在上述代码中,我们使用了您提供的 `prompt` 作为情感分析的输入,并将结果打印出来。请确保将 `YOUR_API_KEY` 替换为您的有效的 OpenAI API 密钥。

注意:在这个例子中,模型将直接对整个 `prompt` 进行情感分析,并生成一个与情感相关的文本结果。具体的情感分析结果将取决于模型的训练和数据,以及可能的后处理步骤。


原创比较不容易,希望大家能点点赞,对我的支持。你们的支持,就是我的动力.

未经授权禁止转载

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

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

相关文章

我改了一行公共代码后,同事说要建个没我的小群

点击上方 前端Q,关注公众号 回复加群,加入前端Q技术交流群 嗨,大家好!这里是道长王jj~ 🎩🧙‍♂️ 今天我想和大家分享一个惨痛的教训,就是当我一意孤行地删掉一个看起来没用的配置文件时&#…

chatgpt赋能python:免费的Python教程:从入门到精通

免费的Python教程:从入门到精通 Python是如今最热门的编程语言之一,在众多编程语言中占据了重要的地位。Python有着简单易学的语法,充足的库支持,高效的执行速度和海量的社区支持,这些使得Python成为最适合初学者的编…

chatgpt赋能python:Python报错Module:从入门到精通

Python报错Module:从入门到精通 在Python编程中,我们经常会遇到各种各样的错误。其中,Module错误是最常见的一种。在这篇文章中,我们将深入探讨Python报错Module的各种原因和解决方法,并希望能够帮助那些遇到这种问题…

chatgpt赋能python:Python词汇大全:从入门到精通

Python词汇大全:从入门到精通 Python作为一门简洁易学的编程语言,已经成为了全球程序员的热门选择。在这篇文章中,我们将介绍Python的词汇大全,包括关键字、数据类型、内建函数、标准库、第三方库等内容,帮助读者更好…

chatgpt赋能python:Python的口头禅:从入门到精通

Python的口头禅:从入门到精通 什么是Python口头禅? Python是一门强大的编程语言,它不仅拥有简洁易读的语法,而且拥有着许多独特的语言特性。其中,Python口头禅是指程序员们在使用Python时最常用的,最经典…

chatgpt赋能python:Python要点:从入门到精通

Python要点:从入门到精通 Python是一门高级编程语言,是一种解释型、面向对象、动态数据类型的语言。它的设计思想是“代码易读易写”,在数据科学、人工智能、自动化测试、Web开发等领域广泛应用。本文将从入门到精通的角度来介绍Python的要点…

chatgpt赋能python:Python构造列表:从入门到精通

Python 构造列表:从入门到精通 Python是一种强大、可扩展、易于学习的编程语言。用Python编写代码的一个重要部分是构建列表,这是Python中最重要的数据结构之一。本文将深入探讨Python列表的构造方法,以帮助您更好地理解它们的概念和用途。 …

基于 ChatGPT 的 helm 入门

1. 写在最前面 公司最近在推业务上云(底层为 k8s 管理),平台侧为了简化业务侧部署的复杂度,基于 helm 、chart 等提供了一个发布平台。 发布平台的使用使业务侧在不了解 helm 、chart 等工具的时候,「只要点点」就可…

我的新书《Android App开发从入门到精通》终于出版啦

前言 经过了两年多终于完成了这本书,2016年9月份开始写的,到今天为止2年零2个月,本书的内容大部分是去年完成的,看过我去年总结的读者可能知道,去年事情很多太忙了,导致本命年这本书没有上架(有…

毕业论文答辩ppt怎么做?

毕业论文是令每个学生最头疼的事情了,毕业论文答辩ppt模板怎么做?毕业ppt模板制作方法有什么技巧呢?下面ppt家园就来介绍一下答辩PPT内容。 答辩PPT最忌讳长篇大论,只需要提炼你论文的核心要点和成果即可。 1.PPT封面 完整的论文答…

如何防止短信验证码接口、登录注册入口被恶意调用攻击?

目录 前言1、短信验证码是什么?2、为什么要对短信验证码进行防护?3、有哪些常见的防护手段?4、这些防护手段有没有用呢,到底该如何选择?5、结语 前言 最近遇到一个关于防止短信验证码被刷的问题,相信很多朋…

验证非法电话号码

程序开发中经常需要用户输入用户信息或者联系方式,其中有一些数组的格式是固定的,程序处理逻辑也是按照这个格式来实现的,但是由于用户输入的是字符串,其灵活性较大,容易输入格式错误的数据。 例如,用户联系…

搞懂 API,调用 API 接口通常有这些技巧

其实没什么技巧,无他,唯熟悉API 原理(dog.jpg)。 不过对于新人来说,掌握这些基础知识还是很有必要的: 1.了解API的功能和用法:在使用API之前,您应该了解API的功能和使用方式。这将有…

如何解决Ganache界面一直转圈的问题

Ganache打不开的解决办法,针对Windows用户 Tip1Tip2 Tip1 不要直接从官网上下载,因为默认下载的是.appx文件,这样即使解压了也没有安装选项,打开ganache.exe后点击quickstart,会一直转圈进不去。(我的就是…

第一款交互式电子游戏 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 4 月 18 日,在 1955 年的今天,著名物理学家爱因斯坦在美国新泽西州的普林斯顿逝世。爱因斯坦于 1905 年获得物理学博士学位,…

【人工智能】AI Code:当你还在谈论人工智能是否取代“程序员”的时候—— 懂 AI 的程序员,已经悄悄 ……

禅与计算机程序设计艺术出品的:Goland AI Code 开发插件: AIXCodeCompletionHelper 目录

chatgpt赋能python:Python绕过付费的SEO技巧

Python绕过付费的SEO技巧 随着网站流量成为企业重要的市场指标,SEO(搜索引擎优化)也成为了网站的重要一环。许多企业为了获取更多的流量,选择通过付费方式在搜索引擎中获得更高的曝光率。但是,对于那些没有足够预算的…

小红书内容种草推广2大玩法攻略_云媒易

随着电商时代的到来,各大品牌在做互联网营销时都热衷于种草营销,也就是我们经常用到的小红书种草推广。一次好的内容种草营销,不仅商家能够获利,还带动短视频平台、kol达人等实现共赢的局面。但是,内容种草做起来并不是…