对于OpenAI 这个公司的ChatGPT产品大家估计已经很是熟悉了,它的作用如下:
ChatGPT是一种基于深度学习的语言模型,具有广泛的应用。以下是对ChatGPT能够实现的一些功能的详细介绍:
-
文本生成:ChatGPT可以根据给定的提示或问题生成连贯、富有创造力的文章。它可以用于写作、创意生成、故事讲述等方面。
-
语言翻译:ChatGPT具备将一种语言翻译成另一种语言的能力。你可以提供一个句子或一个段落,ChatGPT将为你提供相应的翻译。
-
问题回答:ChatGPT可以回答关于各种主题的问题。不论是历史、地理、科学还是其他领域的知识,只需提供相关问题,ChatGPT会尽力给出准确的答案。
-
编程帮助:如果你在编程过程中遇到问题,ChatGPT可以为你提供帮助和建议。你可以询问任何与编程语言、库函数、错误调试等相关的问题,ChatGPT将尽力为你解答。
-
学术研究:ChatGPT可以用作学术研究的工具,帮助进行文献搜索、问题探索和思路拓展。研究者可以将ChatGPT作为一个有益的合作伙伴,来生成创新的研究想法。
-
创意推荐:如果你需要一些创意或灵感,ChatGPT可以根据指定的主题或要求提供相关的建议。无论是写诗、设计、音乐还是其他艺术形式,ChatGPT都可以为你提供一些建议。
-
情感分析:ChatGPT具备情感分析的能力,可以识别文本的情绪和情感倾向。这对于社交媒体分析、市场调研等领域非常有用。
-
对话系统:ChatGPT可以与用户进行自然对话,回答用户的问题、提供信息和建议,并模拟真实的人类对话。这使得ChatGPT成为一个交流和娱乐工具。
当然还有很多很多其他,如写简历,写论文,只有你想不到的,没有它做不到的。
但是它有的时候也会胡编乱造,可以将创造性
即温度temperature
调的低一些。
关于OpenAI ChatGPT 的作用介绍,请移步哔哩哔哩视频:
好,废话不多说,下面进入正题,国内环境如何畅通的访问OpenAI ChatGPT呢?
国内畅通访问OpenAI ChatGPT
反向代理大家已经很熟悉了,这里就是利用了Nginx的反向代理功能。其实网络上有很多提供了代理的域名,但是你不保准它们是不是会收集信息,以及怕OpenAI的key泄露。
所以这里采用手动方式来自己搭建。
方式一
这里是针对OpenAI的SDK,或者OpenAI的HTTP方式的,如果对于LangChain请移步方式二。
前提依赖:
- OpenAI Key
- 外网主机
- 域名地址
配置安装Nginx
首选登录外网主机(你懂的),然后创建所需目录和Nginx配置文件:
sh
mkdir ~/nginx/{html,conf.d} -pv
cd ~/nginx
vim nginx.conf
将如下内容放到``nginx.conf`文件中:
注意: 请将域名替换成你自己的,我这里使用:web.lansejingyu.com 来做示例。
nginx
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 65535;
accept_mutex off;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_tokens off;
server_names_hash_bucket_size 64;
server_names_hash_max_size 1024;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
include /etc/nginx/conf.d/*.conf;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
proxy_buffers 16 64k;
proxy_buffer_size 512k;
proxy_busy_buffers_size 512k;
proxy_intercept_errors on;
proxy_connect_timeout 3000;
proxy_send_timeout 300;
proxy_read_timeout 300;
large_client_header_buffers 4 512k;
client_max_body_size 500m;
client_body_buffer_size 3m;
# 核心
server {
listen 80;
listen [::]:80;
server_name web.lansejingyu.com; # 换成你自己的域名
charset utf-8;
location / {
proxy_pass https://api.openai.com;
proxy_ssl_server_name on;
proxy_set_header Host api.openai.com;
}
}
}
上面是http的方式,如果你有证书,可以使用https的方式,核心配置如下:
nginx
server {
listen 443 ssl http2;
server_name web.lansejingyu.com; # 换成你自己的域名
charset utf-8;
ssl_certificate cert/fullchain.pem;
ssl_certificate_key cert/privkey.pem;
ssl_session_timeout 1d;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECD
HE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:D
HE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:A
ES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:10m;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://api.openai.com;
proxy_ssl_server_name on;
proxy_set_header Host api.openai.com;
}
}
然后启动nginx
服务,这里通过Docker启动:
sh
cd ~/nginx
sudo docker run -d --name ngx --restart=always -p 80:80 \
-v `pwd`/html:/usr/share/nginx/html \
-v `pwd`/conf.d:/etc/nginx/conf.d \
-v `pwd`/nginx.conf:/etc/nginx/nginx.conf \
nginx:1.25.2
最后,将域名: web.lansejingyu.com 解析到外网主机的公网IP上。然后你就可以通过域名: web.lansejingyu.com 来代理访问OpenAI了。
下面给出示例,分别用于:
- Openai SDK
- HTTP方式
- LangChain SDK
OpenAI SDK 方式
这里以Python为例,Nodejs也差不多。
安装SDK:
sh
pip install -U openai
编写代码:main.py
python
import openai
# 设置OpenAI key
penai.api_key = "<API-KEY>"
# 设置openai 代理地址, 需要添加 /v1
openai.api_base = "http://web.lansejingyu.com/v1"
def chat(prompt: str) -> dict:
"""
生成,根据提示,来生成补全
:param prompt: 提示
:return: 返回response map
"""
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": prompt}
]
)
return response
if __name__ == '__main__':
print(chat("Hi who are you?"))
然后执行python 即可:
sh
python3 main.py
响应位于:response.choices[0].message.content
json
{
"id": "chatcmpl-7qujNVvN5651pcLcg2jAfNNu3nucz",
"object": "chat.completion",
"created": 1692845485,
"model": "gpt-3.5-turbo-0613",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! I am Xiao Ming, your personal assistant. I am an AI language model designed to assist with various tasks and provide information. How can I help you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 41,
"completion_tokens": 34,
"total_tokens": 75
}
}
HTTP方式
这里使用curl
命令行来访问:
sh
# 替换 $OPENAI_API_KEY 为你的key
curl http://web.lansejingyu.com/v1/chat/completions
-H "Content-Type: application/json"
-H "Authorization: Bearer $OPENAI_API_KEY"
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hi who are you?"}],
"temperature": 0.7
}'
也可以通过获取上面的response
.
LangChain SDK
这里介绍更加重量级的选手:LangChain
,使用它可以创造非常牛逼的应用,其可以对接多种大模型,包括OpenAI。
首选按照方式一,配置好nginx的代理域名。
然后安装SDK:
sh
# 因为我们要使用openai,所以也需要安装openai的sdk
pip install -U langchian openai
编写main.py
:
python
from langchain.llms import OpenAI
import os
os.environ["OPENAI_API_BASE"] = "http://web.lansejingyu.com/v1"
os.environ["OPENAI_API_KEY"] = "sk-xxxxxxxxx"
llm = OpenAI(temperature=0.9)
print(llm("Hi who are you?))
然后你会直接得到content内容。
方式二 【推荐】
针对前面的方式,门槛还是很高的。所以这里给大家推荐我一直在用的稳定快速的服务,下面的依赖统统不需要:
OpenAI Key外网主机域名地址
直接拿来使用就可以,支持手机端和PC端。
下面是示例:
默认自带历史记录,使AI能够理解之前的对话,也可以关闭历史会话功能。
左下角3.5位置,可以切换成``Openai 4.0`版本,来使用最强的模型。
同时支持让机器人扮演某种角色:
所以你还在犹豫什么,赶紧访问: web.lansejingyu.com 来使用吧,还有更强大的在于AI 智脑
:你的云端第二大脑,可以与任何文件聊天,支持word,text,markdown,pdf,csv 等等。