目录
1、什么是ChatGPT
2、我可以相信人工智能告诉我真相吗?
3、你会使用我的对话进行培训吗?
4、ChatGPT 接口参考
认证
请求组织
5、ChatGPT初体验
1、什么是ChatGPT
ChatGPT的研究预览是免费使用的。
ChatGPT 是从 GPT-3.5 微调而来的,GPT-<>.<> 是一种经过训练以生成文本的语言模型。ChatGPT 通过使用带有人类反馈的强化学习 (RLHF) 针对对话进行了优化,这种方法使用人类演示和偏好比较来指导模型实现所需的行为。
这些模型是在人类编写的大量互联网数据(包括对话)上训练的,因此它提供的响应可能听起来像人类。重要的是要记住,这是系统设计的直接结果(即最大化输出与模型训练的数据集之间的相似性),并且此类输出有时可能不准确,不真实,并且有时具有误导性。
2、我可以相信人工智能告诉我真相吗?
ChatGPT 没有连接到互联网,它偶尔会产生不正确的答案。它对 2021 年之后的世界和事件的了解有限,偶尔也可能产生有害指令或有偏见的内容。
作为我们对安全和负责任的 AI 承诺的一部分,我们会审查对话以改进我们的系统并确保内容符合我们的政策和安全要求。
3、你会使用我的对话进行培训吗?
是的。我们的 AI 培训师可能会审核您的对话,以改进我们的系统。
4、ChatGPT 接口参考
可以通过来自任何语言的 HTTP 请求、我们的官方 Python 绑定、我们的官方 Node.js 库或社区维护的库与 API 进行交互。
若要安装官方 Python 绑定,请运行以下命令:
pip install openai
要安装官方的 Node.js 库,请在 Node.js 项目目录中运行以下命令:
npm install openai
认证
OpenAI API 使用 API 密钥进行身份验证。访问您的 API 密钥页面,检索您将在请求中使用的 API 密钥。
请记住,您的API密钥是一个秘密!不要与他人共享或在任何客户端代码(浏览器、应用程序)中公开它。生产请求必须通过您自己的后端服务器进行路由,在该服务器上,可以从环境变量或密钥管理服务安全地加载 API 密钥。
所有 API 请求都应在 HTTP 标头中包含您的 API 密钥,如下所示:Authorization
Authorization: Bearer OPENAI_API_KEY
请求组织
对于属于多个组织的用户,您可以传递标头以指定用于 API 请求的组织。这些 API 请求的使用量将计入指定组织的订阅配额。
示例 curl 命令:
curl https://api.openai.com/v1/models \-H "Authorization: Bearer $OPENAI_API_KEY" \-H "OpenAI-Organization: org-LWgUyY0duWzNrkl9wJiYglJJ"
Python 包的示例:openai
import os
import openai
openai.organization = "org-LWgUyY0duWzNrkl9wJiYglJJ"
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Model.list()
Node.js 包的示例:openai
import { Configuration, OpenAIApi } from "openai";
const configuration = new Configuration({organization: "org-LWgUyY0duWzNrkl9wJiYglJJ",apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.listEngines();
5、ChatGPT初体验
- 安装gRPC库和Protobuf编译器:
go get google.golang.org/grpc
go get github.com/golang/protobuf/protoc-gen-go
- 编写.proto文件:
syntax = "proto3";package helloworld;message HelloRequest {string name = 1;
}message HelloResponse {string message = 1;
}service Greeter {rpc SayHello (HelloRequest) returns (HelloResponse);
}
- 使用protobuf编译器生成Go代码:
protoc --go_out=plugins=grpc:. helloworld.proto
- 实现服务端:
package mainimport ("context""fmt""log""net""google.golang.org/grpc"pb "path/to/protobuf/generated/files"
)const (port = ":50051"
)type server struct{}func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloResponse, error) {log.Printf("Received: %v", in.GetName())return &pb.HelloResponse{Message: "Hello " + in.GetName()}, nil
}func main() {lis, err := net.Listen("tcp", port)if err != nil {log.Fatalf("failed to listen: %v", err)}s := grpc.NewServer()pb.RegisterGreeterServer(s, &server{})fmt.Printf("Server listening at %v\n", lis.Addr())if err := s.Serve(lis); err != nil {log.Fatalf("failed to serve: %v", err)}
}
- 实现客户端:
package mainimport ("context""log""google.golang.org/grpc"pb "path/to/protobuf/generated/files"
)const (address = "localhost:50051"defaultName = "world"
)func main() {// Set up a connection to the server.conn, err := grpc.Dial(address, grpc.WithInsecure())