ChatGPT_Academic|ChatGPT多功能拓展插件安装教程
科研工作专用ChatGPT拓展,特别优化学术Paper润色体验,支持自定义快捷按钮,支持自定义函数插件,支持markdown表格显示,Tex公式双显示,代码显示功能完善,新增本地Python
/C++
/Go项目树剖析功能
/项目源代码自译解
能力,新增PDF和Word文献批量总结功能/PDF论文全文翻译功能。
Note
- 请注意只有“红颜色”标识的函数插件(按钮)才支持读取文件。目前对
Word
格式文件的支持插件正在逐步完善中,需要更多developer的帮助。- 本项目中每个文件的功能都在自译解
self_analysis.md
详细说明。随着版本的迭代,您也可以随时自行点击相关函数插件,调用GPT重新生成项目的自我解析报告。- 如果您不太习惯部分中文命名的函数、注释或者界面,您可以随时点击相关函数插件,调用ChatGPT一键生成纯英文的项目源代码。
- 项目使用OpenAI的
GPT-3.5-Turbo
模型,期待GPT-4早点放宽门槛。
功能 | 描述 |
---|---|
一键润色 | 支持一键润色、一键查找论文语法错误 |
一键中英互译 | 一键中英互译 |
一键代码解释 | 可以正确显示代码、解释代码 |
自定义快捷键 | 支持自定义快捷键 |
配置代理服务器 | 支持配置代理服务器 |
模块化设计 | 支持自定义高阶的实验性功能与[函数插件],插件支持热更新 |
自我程序剖析 | [函数插件] 一键读懂本项目的源代码 |
程序剖析 | [函数插件] 一键可以剖析其他Python/C/C++/Java项目树 |
读论文 | [函数插件] 一键解读latex论文全文并生成摘要 |
批量注释生成 | [函数插件] 一键批量生成函数注释 |
chat分析报告生成 | [函数插件] 运行后自动生成总结汇报 |
arxiv小助手 | [函数插件] 输入arxiv文章url即可一键翻译摘要+下载PDF |
PDF论文全文翻译功能 | [函数插件] PDF论文提取题目&摘要+翻译全文(多线程) |
谷歌学术统合小助手 (Version>=2.45) | [函数插件] 给定任意谷歌学术搜索页面URL,让GPT帮你选择有趣的文章 |
公式显示 | 可以同时显示公式的tex形式和渲染形式 |
图片显示 | 可以在markdown中显示图片 |
多线程函数插件支持 | 支持多线调用chatgpt,一键处理海量文本或程序 |
支持GPT输出的markdown表格 | 可以输出支持GPT的markdown表格 |
启动暗色gradio主题 | 在浏览器url后面添加/?__dark-theme=true 可以切换dark主题 |
…… | …… |
界面展示
自定义
所有按钮都通过读取functional.py
动态生成,可随意加自定义功能,解放粘贴板。
润色
包含纠错功能
Markdown
支持GPT输出的markdown
表格
公式
如果输出包含公式,会同时以tex
形式和渲染形式显示,方便复制和阅读。
代码分析
懒得看项目代码?直接使用chatgpt_academic进行代码分析。
GitHub
项目开源地址:binary-husky/chatgpt_academic
部署教程
如果您是初学者,对于命令行不太理解,那么请按下键盘上的Win键+R键
后,在弹出的新窗口内输入CMD并按下回车,打开CMD窗口,按顺序执行如下的每一条命令。
首先我们需要确认一个工作目录,用来存放chatgpt_academic的相关文件。本站所选择的目录为D盘的根目录下openai.wiki文件夹,完整路径为:D:\openai.wiki。
1.检测D盘是否在openai.wiki,没有则创建该文件夹。
if not exist D:\openai.wiki mkdir D:\openai.wiki
2.拉取Github仓库文件夹,将下载至openai.wiki文件夹。
git clone https://github.com/binary-husky/chatgpt_academic.git
注意:如果您无法完成第2步,执行后报错或者无法下载,可以下载该文件将其解压至D:\openai.wiki即可。
3.强制切换工作路径为D盘的openai.wiki\chatgpt_academic
文件夹。
cd /d D:\openai.wiki\chatgpt_academic
配置API_KEY和代理设置
相关描述
在配置Config相关内容之前,我们应该先新建一个名为config_private.py的配置文件,不需要直接修改项目内的config.py
文件。因为该项目会优先读取config_private.py文件,如果config_private.py不存在才会读取config.py
文件。这样做的目的是可以让config_private.py
不受git管控,更加安全。
在
中,需要配置config_private.py
海外Proxy
和OpenAI API KEY
。
- 海外Proxy
- 关于此部分内容较为敏感,请自行搜索。本站所使用的魔法工具端口为7890,如果您使用的工具是Cl**h可直接与本站设置相同,将Proxy设置为默认的7890即可。
- OpenAI API KEY
- 关于openAI的API Key可前往该网址获取https://platform.openai.com/account/api-keys
配置说明
⚠️警告:魔法地区必须设置为欧美地区,否则即便可以正常使用,也极有可能会存在封号的危险。
以下是本站的config_private.py
文件夹内容,本站仅修改了3行内容,请根据自身情况修改。
- 第2行
- 您自行获取到的
OpenAI API KEY
- 您自行获取到的
- 第5行
- 是否使用魔法?我们将其设置为
True
。
- 是否使用魔法?我们将其设置为
- 第16和17行
- 可能有些人不知道自己的魔法工具是链接方式是哪一种协议,但这不重要,我们将这两行的端口都进行修改即可。
# [step 1]>> 例如: API_KEY = "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" (此key无效) API_KEY = "sk-vl82***yHOx4l***pwSOT3Blb***JBEBlJ***FZ80CZP***S" # [step 2]>> 改为True应用代理,如果直接在海外服务器部署,此处不修改 USE_PROXY = True if USE_PROXY: # 填写格式是 [协议]:// [地址] :[端口],填写之前不要忘记把USE_PROXY改成True,如果直接在海外服务器部署,此处不修改 # 例如 "socks5h://localhost:11284" # [协议] 常见协议无非socks5h/http; 例如 v2**y 和 ss* 的默认本地协议是socks5h; 而cl**h 的默认本地协议是http # [地址] 懂的都懂,不懂就填localhost或者127.0.0.1肯定错不了(localhost意思是代理软件安装在本机上) # [端口] 在代理软件的设置里找。虽然不同的代理软件界面不一样,但端口号都应该在最显眼的位置上 # 代理网络的地址,打开你的科学上网软件查看代理的协议(socks5/http)、地址(localhost)和端口(11284) proxies = { # [协议]:// [地址] :[端口] "http": "socks5h://localhost:7890", "https": "socks5h://localhost:7890", } else: proxies = None # [step 3]>> 以下配置可以优化体验,但大部分场合下并不需要修改 # 对话窗的高度 CHATBOT_HEIGHT = 1115 # 代码高亮 CODE_HIGHLIGHT = True # 窗口布局 LAYOUT = "LEFT-RIGHT" # "LEFT-RIGHT"(左右布局) # "TOP-DOWN"(上下布局) # 发送请求到OpenAI后,等待多久判定为超时 TIMEOUT_SECONDS = 25 # 网页的端口, -1代表随机端口 WEB_PORT = -1 # 如果OpenAI不响应(网络卡顿、代理失败、KEY失效),重试的次数限制 MAX_RETRY = 2 # OpenAI模型选择是(gpt4现在只对申请成功的人开放) LLM_MODEL = "gpt-3.5-turbo" # OpenAI的API_URL API_URL = "https://api.openai.com/v1/chat/completions" # 设置并行使用的线程数 CONCURRENT_COUNT = 100 # 设置用户名和密码(相关功能不稳定,与gradio版本和网络都相关,如果本地使用不建议加这个) # [("username", "password"), ("username2", "password2"), ...] AUTHENTICATION = []
环境安装
为不影响电脑中的现有环境,请一定要安装Conda,如果您不知道什么是Conda,或者未安装过Conda,请参考如下文章,安装部署Conda之后再继续以下步骤。
在CMD中执行下面的命令行,创建Conda虚拟环境至该项目的目录中,方便日后重装系统也能够正常使用,无需重新部署环境。
conda create -p D:\openai.wiki\chatgpt_academic\ENV python=3.11
执行完成上面的命令之后,将会在CMD窗口中看到Proceed ([y]/n)?
提示,我们直接按下回车即可。
初始化Conda环境,避免后续可能报错。
conda init cmd.exe
激活已创建的Conda环境,这样我们可以将我们后续所需要的所有环境依赖都安装至此环境下。
conda activate D:\openai.wiki\chatgpt_academic\ENV
为避免出现问题,我们再次强制切换至chatgpt_academic的项目路径,确保一切可以正常安装。
cd /d D:\openai.wiki\chatgpt_academic
注意:执行此步骤时尽量不要修改源文件,因为官方源或清华大学源可能导致安装失败,如果您看不懂我在说什么,那么直接执行如下命令即可。
python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
一般来说,不会出现任何问题,直接等待自动安装完成即可。
魔法测试
为了检测您的魔法设置是否正确,可以执行如下代码。如果执行该代码后能够得到正确显示您的魔法地区位置,那么则代表您的魔法设置成功。
python check_proxy.py
本站执行代码后得到的返回结果如下(已删除相关敏感信息):
(D:\openai.wiki\chatgpt_academic\ENV) D:\openai.wiki\chatgpt_academic>python check_proxy.py [PROXY]... 呆梨配置 so***5h://localhost:7890, 呆梨所在地:Netherlands(荷兰)
启动教程
以后您每次重启电脑或脚本,都需要先按顺序执行以下操作才能够正常使用。
执行如下代码,强制进入chatgpt_academic的项目目录。
cd /d D:\openai.wiki\chatgpt_academic
执行如下代码,激活chatgpt_academic的Conda环境。
conda activate D:\openai.wiki\chatgpt_academic\ENV
执行如下代码,启动chatgpt_academic的WebUI界面。
python main.py
使用教程
在我们执行完成启动UI界面的命令之后,脚本将会自动打开您的浏览器,并且在浏览器内自动打开网址http://localhost:2835/?__dark-theme=true,也就是暗色模式的WebUI界面。
同时我们在CMD窗口内还会看到一些其它信息,可能与您的略有不同。
(D:\openai.wiki\chatgpt_academic\ENV) D:\openai.wiki\chatgpt_academic>python main.py [PROXY] 网络代理状态:已配置。配置信息如下: {'http': 'socks5h://localhost:7890', 'https': 'socks5h://localhost:7890'} [API_KEY] 您的 API_KEY 是: sk-rW3npC0vwff2*** API_KEY 导入成功 所有问询记录将自动保存在本地目录./gpt_log/chat_secrets.log, 请注意自我隐私保护哦! 查询代理的地理位置,返回的结果是{'error': True, 'reason': 'RateLimited', 'message': 'Visit https://ipapi.co/ratelimited/ for details'} 呆梨配置 so***5h://localhost:7890, 呆梨所在地:Netherlands 如果浏览器没有自动打开,请复制并转到以下URL: (亮色主题): http://localhost:2835 (暗色主题): http://localhost:2835/?__dark-theme=true Running on local URL: http://0.0.0.0:2835 Running on public URL: https://3116c7f02626c1ef0e.gradio.live This share link expires in 72 hours. For free permanent hosting and GPU upgrades (NEW!), check out Spaces: https://huggingface.co/spaces
根据上面的内容,有用的信息如下:
- 亮色模式的网址为:http://localhost:2835
- 暗色模式的网址为:http://localhost:2835/?__dark-theme=true
- 本地运行的IP地址为
localhost
,也就是127.0.0.1
。 - 局域网的IP6地址为:https://3116c7f02626c1ef0e.gradio.live,各位请注意,这是本站的IP6地址,您的IP6地址肯定与本站所提供的不一致,所以您的局域网IP地址请自行获取。关于这一部分有什么作用呢?那就是您可以不局限于此电脑内使用该项目,您连接自己WIFI的任何设备都可以打开该地址使用
chatgpt_academic
的相关功能,哪怕躺在床上用手机控制chatgpt_academic
,非常方便。 - 注意:最后一行的内容为
This share link expires in 72 hours. For free permanent hosting and GPU upgrades (NEW!), check out Spaces: https://huggingface.co/spaces
,翻译成中文为此共享链接将在 72 小时后过期。 如需免费永久托管和 GPU 升级(新!),请查看 Spaces:https://huggingface.co/spaces
。也就是说,如果您持续运行时间达到72小时,局域网内的其它设备将无法正常访问,我们届时重启一下chatgpt_academic
的启动脚本即可,其时这是无关仅要的,因为一般很少有人会持续运行三天。
功能测试
我们可以使用一个案例来尝试该项目能否正常运行,也就是您检测的海外Proxy
和OpenAI API KEY
配置是否正确。
我们在输入区
填写以下内容,然后点击解析整个Python项目
按钮,尝试是否能够正常运行。
注意:输入区
必须填写绝对路径
,否则会报错。所以您的路径如果与本站不一致,请自行修改。
D:/openai.wiki/chatgpt_academic/crazy_functions/test_project/python/dqn
关于示例dqn.py
的源码内容如下,可自行参考分析结果是否正确:
from typing import Any, Dict, List, Optional, Tuple, Type, Union import gym import numpy as np import torch as th from torch.nn import functional as F from stable_baselines3.common import logger from stable_baselines3.common.off_policy_algorithm import OffPolicyAlgorithm from stable_baselines3.common.preprocessing import maybe_transpose from stable_baselines3.common.type_aliases import GymEnv, MaybeCallback, Schedule from stable_baselines3.common.utils import get_linear_fn, is_vectorized_observation, polyak_update from stable_baselines3.dqn.policies import DQNPolicy class DQN(OffPolicyAlgorithm): """ Deep Q-Network (DQN) Paper: https://arxiv.org/abs/1312.5602, https://www.nature.com/articles/nature14236 Default hyperparameters are taken from the nature paper, except for the optimizer and learning rate that were taken from Stable Baselines defaults. :param policy: The policy model to use (MlpPolicy, CnnPolicy, ...) :param env: The environment to learn from (if registered in Gym, can be str) :param learning_rate: The learning rate, it can be a function of the current progress remaining (from 1 to 0) :param buffer_size: size of the replay buffer :param learning_starts: how many steps of the model to collect transitions for before learning starts :param batch_size: Minibatch size for each gradient update :param tau: the soft update coefficient ("Polyak update", between 0 and 1) default 1 for hard update :param gamma: the discount factor :param train_freq: Update the model every ``train_freq`` steps. Alternatively pass a tuple of frequency and unit like ``(5, "step")`` or ``(2, "episode")``. :param gradient_steps: How many gradient steps to do after each rollout (see ``train_freq``) Set to ``-1`` means to do as many gradient steps as steps done in the environment during the rollout. :param optimize_memory_usage: Enable a memory efficient variant of the replay buffer at a cost of more complexity. See https://github.com/DLR-RM/stable-baselines3/issues/37#issuecomment-637501195 :param target_update_interval: update the target network every ``target_update_interval`` environment steps. :param exploration_fraction: fraction of entire training period over which the exploration rate is reduced :param exploration_initial_eps: initial value of random action probability :param exploration_final_eps: final value of random action probability :param max_grad_norm: The maximum value for the gradient clipping :param tensorboard_log: the log location for tensorboard (if None, no logging) :param create_eval_env: Whether to create a second environment that will be used for evaluating the agent periodically. (Only available when passing string for the environment) :param policy_kwargs: additional arguments to be passed to the policy on creation :param verbose: the verbosity level: 0 no output, 1 info, 2 debug :param seed: Seed for the pseudo random generators :param device: Device (cpu, cuda, ...) on which the code should be run. Setting it to auto, the code will be run on the GPU if possible. :param _init_setup_model: Whether or not to build the network at the creation of the instance """ def __init__( self, policy: Union[str, Type[DQNPolicy]], env: Union[GymEnv, str], learning_rate: Union[float, Schedule] = 1e-4, buffer_size: int = 1000000, learning_starts: int = 50000, batch_size: Optional[int] = 32, tau: float = 1.0, gamma: float = 0.99, train_freq: Union[int, Tuple[int, str]] = 4, gradient_steps: int = 1, optimize_memory_usage: bool = False, target_update_interval: int = 10000, exploration_fraction: float = 0.1, exploration_initial_eps: float = 1.0, exploration_final_eps: float = 0.05, max_grad_norm: float = 10, tensorboard_log: Optional[str] = None, create_eval_env: bool = False, policy_kwargs: Optional[Dict[str, Any]] = None, verbose: int = 0, seed: Optional[int] = None, device: Union[th.device, str] = "auto", _init_setup_model: bool = True, ): super(DQN, self).__init__( policy, env, DQNPolicy, learning_rate, buffer_size, learning_starts, batch_size, tau, gamma, train_freq, gradient_steps, action_noise=None, # No action noise policy_kwargs=policy_kwargs, tensorboard_log=tensorboard_log, verbose=verbose, device=device, create_eval_env=create_eval_env, seed=seed, sde_support=False, optimize_memory_usage=optimize_memory_usage, supported_action_spaces=(gym.spaces.Discrete,), ) self.exploration_initial_eps = exploration_initial_eps self.exploration_final_eps = exploration_final_eps self.exploration_fraction = exploration_fraction self.target_update_interval = target_update_interval self.max_grad_norm = max_grad_norm # "epsilon" for the epsilon-greedy exploration self.exploration_rate = 0.0 # Linear schedule will be defined in `_setup_model()` self.exploration_schedule = None self.q_net, self.q_net_target = None, None if _init_setup_model: self._setup_model() def _setup_model(self) -> None: super(DQN, self)._setup_model() self._create_aliases() self.exploration_schedule = get_linear_fn( self.exploration_initial_eps, self.exploration_final_eps, self.exploration_fraction ) def _create_aliases(self) -> None: self.q_net = self.policy.q_net self.q_net_target = self.policy.q_net_target def _on_step(self) -> None: """ Update the exploration rate and target network if needed. This method is called in ``collect_rollouts()`` after each step in the environment. """ if self.num_timesteps % self.target_update_interval == 0: polyak_update(self.q_net.parameters(), self.q_net_target.parameters(), self.tau) self.exploration_rate = self.exploration_schedule(self._current_progress_remaining) logger.record("rollout/exploration rate", self.exploration_rate) def train(self, gradient_steps: int, batch_size: int = 100) -> None: # Update learning rate according to schedule self._update_learning_rate(self.policy.optimizer) losses = [] for _ in range(gradient_steps): # Sample replay buffer replay_data = self.replay_buffer.sample(batch_size, env=self._vec_normalize_env) with th.no_grad(): # Compute the next Q-values using the target network next_q_values = self.q_net_target(replay_data.next_observations) # Follow greedy policy: use the one with the highest value next_q_values, _ = next_q_values.max(dim=1) # Avoid potential broadcast issue next_q_values = next_q_values.reshape(-1, 1) # 1-step TD target target_q_values = replay_data.rewards + (1 - replay_data.dones) * self.gamma * next_q_values # Get current Q-values estimates current_q_values = self.q_net(replay_data.observations) # Retrieve the q-values for the actions from the replay buffer current_q_values = th.gather(current_q_values, dim=1, index=replay_data.actions.long()) # Compute Huber loss (less sensitive to outliers) loss = F.smooth_l1_loss(current_q_values, target_q_values) losses.append(loss.item()) # Optimize the policy self.policy.optimizer.zero_grad() loss.backward() # Clip gradient norm th.nn.utils.clip_grad_norm_(self.policy.parameters(), self.max_grad_norm) self.policy.optimizer.step() # Increase update counter self._n_updates += gradient_steps logger.record("train/n_updates", self._n_updates, exclude="tensorboard") logger.record("train/loss", np.mean(losses)) def predict( self, observation: np.ndarray, state: Optional[np.ndarray] = None, mask: Optional[np.ndarray] = None, deterministic: bool = False, ) -> Tuple[np.ndarray, Optional[np.ndarray]]: """ Overrides the base_class predict function to include epsilon-greedy exploration. :param observation: the input observation :param state: The last states (can be None, used in recurrent policies) :param mask: The last masks (can be None, used in recurrent policies) :param deterministic: Whether or not to return deterministic actions. :return: the model's action and the next state (used in recurrent policies) """ if not deterministic and np.random.rand() < self.exploration_rate: if is_vectorized_observation(maybe_transpose(observation, self.observation_space), self.observation_space): n_batch = observation.shape[0] action = np.array([self.action_space.sample() for _ in range(n_batch)]) else: action = np.array(self.action_space.sample()) else: action, state = self.policy.predict(observation, state, mask, deterministic) return action, state def learn( self, total_timesteps: int, callback: MaybeCallback = None, log_interval: int = 4, eval_env: Optional[GymEnv] = None, eval_freq: int = -1, n_eval_episodes: int = 5, tb_log_name: str = "DQN", eval_log_path: Optional[str] = None, reset_num_timesteps: bool = True, ) -> OffPolicyAlgorithm: return super(DQN, self).learn( total_timesteps=total_timesteps, callback=callback, log_interval=log_interval, eval_env=eval_env, eval_freq=eval_freq, n_eval_episodes=n_eval_episodes, tb_log_name=tb_log_name, eval_log_path=eval_log_path, reset_num_timesteps=reset_num_timesteps, ) def _excluded_save_params(self) -> List[str]: return super(DQN, self)._excluded_save_params() + ["q_net", "q_net_target"] def _get_torch_save_params(self) -> Tuple[List[str], List[str]]: state_dicts = ["policy", "policy.optimizer"] return state_dicts, []
配置正确
如果一切配置正常,那么将会得到如下结果,如图所示:
完整文本内容将会被自动保存至D:\openai.wiki\chatgpt_academic\gpt_log\chatGPT分析报告2023-04-09-12-41-53.md
,打开之后的完整内容如下:
# chatGPT 分析报告 ## 接下来请你逐文件分析下面的工程[0/3] 请对下面的程序文件做一个概述: D:\openai.wiki\chatgpt_academic\crazy_functions\test_project\python\dqn\dqn.py 该文件是实现了深度Q网络(Deep Q-Network, DQN)的算法,在Stable-Baselines3框架下实现,该框架是OpenAI的一份强化学习库,可以用来构建,训练和评估强化学习算法。 该文件实现了一个继承自OffPolicyAlgorithm的DQN类。DQN类的构造器根据传入的参数构建DQN算法的模型,包括policy、环境env、学习率learning_rate、缓存区大小buffer_size、起始步长learning_starts、随机梯度下降小批量batch_size等参数。 该文件实现了针对Q-learning算法的一些改进,包括目标函数的稳定化和经验回放等,其中目标网络与当前网络相互独立,缓存区中储存了智能体的历史经验序列,策略通过学习缓存区中的样本经验更新。 其中_collect_rollouts()函数中实现了在环境中收集数据至缓存区,train()函数中实现了网络的训练和更新,predict()函数中实现了针对当前状态的Q值选择动作的逐步贪心策略。该DQN算法继承了Stable-Baselines3的OffPolicyAlgorithm类,所以也包括此类的属性和方法。 ## [1/3] 请对下面的程序文件做一个概述: D:\openai.wiki\chatgpt_academic\crazy_functions\test_project\python\dqn\policies.py 本程序文件是深度强化学习算法中的一个模块,负责定义了DQN的Q网络以及DQN算法所需的两个模型(当前模型和目标模型)和两个网络(行为网络和目标网络)。具体包括: 1. QNetwork类:Action-Value (Q-Value) network for DQN, 构建Q网络,包括输入观测和输出所有动作的Q值。 2. DQNPolicy类:包含Q-Value Net和目标网络的策略类, 用于定义DQN 需要构建的行为网络和目标网络。同时包含一个_update_features_extractor用于更新feature extractor 3. MlpPolicy类:继承DQNPolicy,指定features_extractor_class为FlattenExtractor,不使用cnn 4. CnnPolicy类: 继承DQNPolicy,指定features_extractor_class为NatureCNN,使用cnn,用于处理图像数据 5. register_policy函数,用于在算法的Policy类选项中注册自定义的Policy类:MlpPolicy和CnnPolicy。 整个程序实现了DQN算法的核心功能,即包括Q网络、行为网络和目标网络的构建,同时在DQNPolicy基础上提供了两种类型的policy, MlpPolicy和CnnPolicy分别适用于不同类型的观测空间。 ## [2/3] 请对下面的程序文件做一个概述: D:\openai.wiki\chatgpt_academic\crazy_functions\test_project\python\dqn\__init__.py 此程序文件名为__init__.py,包含了两个导入语句。第一个导入语句从stable_baselines3.dqn.dqn模块中导入DQN类,第二个导入语句从stable_baselines3.dqn.policies模块中导入了CnnPolicy和MlpPolicy类。该程序很可能是一个稳定基线算法库的包的初始化文件,提供了DQN类和两个策略类的导入。 ## 根据以上你自己的分析,对程序的整体功能和构架做出概括。然后用一张markdown表格整理每个文件的功能(包括dqn.py, policies.py, __init__.py)。 程序整体功能:实现了深度Q网络(DQN)算法,在Stable-Baselines3框架下实现,用于构建、训练和评估DQN算法。 程序的总体结构如下: | 文件名 | 功能描述 | | ------ | ------ | | dqn.py | 定义了DQN算法的主要逻辑和过程,包括缓存区管理、训练、更新等逻辑 | | policies.py | 定义了DQN算法中Q网络以及当前和目标模型等,包含了MlpPolicy和CnnPolicy两种策略定义 | | __init__.py | 包含了DQN类和两个策略类的导入 | 详细的功能描述如下: | 文件名 | 主要功能 | | ------ | ------ | | dqn.py | 实现了DQN算法的主要逻辑和过程,包括缓存区管理、训练、更新等逻辑 | | policies.py | 定义了DQN算法中Q网络以及当前和目标模型等,包含了MlpPolicy和CnnPolicy两种策略定义。 | | __init__.py | 包含了DQN类和两个策略类的导入。 | 注:此表格中,我们按照题目的要求对每个文件的功能进行了概述和整理,然而根据代码文件的具体实现情况,还有很多详细的细节和函数实现方式,这里没有一一列举出来。
这代表我们已经成功配置完成了所有相关内容和环境,已经可以获取正确的结果。
其它测试
以下是一些其它的测试方式案例,注意替换成自己的绝对路径。
- 测试C++项目头文件分析 input区域 输入 `./crazy_functions/test_project/cpp/libJPG` , 然后点击 "[实验] 解析整个C++项目(input输入项目根路径)" - 测试给Latex项目写摘要 input区域 输入 `./crazy_functions/test_project/latex/attention` , 然后点击 "[实验] 读tex论文写摘要(input输入项目根路径)" - 测试Python项目分析 input区域 输入 `./crazy_functions/test_project/python/dqn` , 然后点击 "[实验] 解析整个py项目(input输入项目根路径)" - 测试自我代码解读 点击 "[实验] 请解析并解构此项目本身" - 测试实验功能模板函数(要求gpt回答历史上的今天发生了什么),您可以根据此函数为模板,实现更复杂的功能 点击 "[实验] 实验功能函数模板"
配置错误
如果您的配置是不正确的,将会得到以下几种报错信息。
API位数错误
如果您在配置文件中所填写的openAI API Key
位置多或少,那么在您启动chatgpt_academic
时,将会得到如下错误:
(D:\openai.wiki\chatgpt_academic\ENV) D:\openai.wiki\chatgpt_academic>python main.py [PROXY] 网络呆梨状态:已配置。配置信息如下: {'http': 'so***5h://localhost:7890', 'https': 'so***5h://localhost:7890'} Traceback (most recent call last): File "D:\openai.wiki\chatgpt_academic\main.py", line 3, in <module> from request_llm.bridge_chatgpt import predict File "D:\openai.wiki\chatgpt_academic\request_llm\bridge_chatgpt.py", line 26, in <module> get_conf('proxies', 'API_URL', 'API_KEY', 'TIMEOUT_SECONDS', 'MAX_RETRY', 'LLM_MODEL') File "D:\openai.wiki\chatgpt_academic\toolbox.py", line 466, in get_conf r = read_single_conf_with_lru_cache(arg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\openai.wiki\chatgpt_academic\toolbox.py", line 451, in read_single_conf_with_lru_cache assert False, "正确的 API_KEY 是 'sk-' + '48 位大小写字母数字' 的组合,请在config文件中修改API密钥, 添加海外代理之后再运行。" + \ AssertionError: 正确的 API_KEY 是 'sk-' + '48 位大小写字母数字' 的组合,请在config文件中修改API密钥, 添加海外代理之后再 运行。(如果您刚更新过代码,请确保旧版config_private文件中没有遗留任何新增键值)
可重新获取API,然后将其填写至配置文件中,注意API是被双引号所包裹的,以sk-
做为开着形状的形式,例如"sk-************************"
,共计48位。
API信息错误
在您运行时,如果遇到下图情况,那么代表您API位数正确,但是API的密钥错误。
[Local Message] Incorrect API key. OpenAI以提供了不正确的API_KEY为由,拒绝服务.
Json异常 “error”: { “message”: “Incorrect API key provided: sk-rW3np***************************************QyKW. You can find your API key at https://platform.openai.com/account/api-keys.”, “type”: “invalid_request_error”, “param”: null, “code”: “invalid_api_key” }}
同样前往openAI的官网重新获取API即可,然后将其填写至配置文件中。
总结
ChatGPT的小工具越来越多啦,以后将会是非常高效的生产力工具。chatgpt_academic由中科院提供,安全性值得信赖,专业性也同样不用质疑。后续本站将会为您提供每一个功能的详细讲解,敬请期待。
广告:如果您没有ChatGPT的API密钥,可以通过本文章右侧边栏的增值服务,在本站购买API专用账号。
请问 “关于openAI的API Key可前往该网址获取https://platform.openai.com/account/api-keys”这个网站登不上去怎么办
@zzzyyy 这个需要开魔法的
AttributeError: ‘Row’ object has no attribute ‘style’,最后一句执行会出现这个,请问是什么原因,大佬