请封装上面的代码
时间: 2024-02-25 15:55:34 浏览: 15
好的,以下是封装后的代码:
```python
import openai
import json
class ChitGPT:
def __init__(self, api_key, model_engine="text-davinci-002"):
"""
初始化 ChitGPT 模型
:param api_key: CSDN API Key
:param model_engine: 模型引擎,可选参数,默认为 text-davinci-002
"""
self.api_key = api_key
self.model_engine = model_engine
# 连接 CSDN API
openai.api_key = self.api_key
def ask(self, question, context=None):
"""
向 ChitGPT 发送问题并获取回答
:param question: str,问题文本
:param context: str,上下文文本,可选参数,默认为 None
:return: str,回答文本
"""
# 构建请求参数
prompt = f"{question}\n"
if context:
prompt = f"{context}\n{prompt}"
prompt += "ChitGPT:"
# 发送请求
response = openai.Completion.create(
engine=self.model_engine,
prompt=prompt,
max_tokens=1024,
n=1,
stop=None,
temperature=0.7,
)
# 解析回答
answer = response.choices[0].text.strip()
if answer.startswith("ChitGPT:"):
answer = answer.replace("ChitGPT:", "").strip()
return answer
def set_model_engine(self, model_engine):
"""
更改模型引擎
:param model_engine: str,模型引擎
"""
self.model_engine = model_engine
def get_model_engine(self):
"""
获取当前模型引擎
:return: str,模型引擎
"""
return self.model_engine
def save_config(self, filename):
"""
保存配置文件
:param filename: str,文件名
"""
config = {
"api_key": self.api_key,
"model_engine": self.model_engine,
}
with open(filename, "w") as f:
json.dump(config, f)
@classmethod
def load_config(cls, filename):
"""
加载配置文件
:param filename: str,文件名
:return: ChitGPT 对象
"""
with open(filename, "r") as f:
config = json.load(f)
return cls(api_key=config["api_key"], model_engine=config["model_engine"])
```
使用方法:
```python
# 初始化模型
chitgpt = ChitGPT(api_key="YOUR_API_KEY")
# 发送问题并获取回答
question = "你会哪些编程语言?"
answer = chitgpt.ask(question)
print(answer)
# 保存配置文件
chitgpt.save_config("config.json")
# 加载配置文件
chitgpt = ChitGPT.load_config("config.json")
```