给我一个具备基础的聊天互动交互模式包含选择哪个好友并且可以通过网络接入任一聊天对话API,实现AI交互式对话。还能够能够保存每个好友的对话聊天记录,再次选择后加载的python代码我需要这样具体的实现代码
时间: 2023-06-16 08:06:55 浏览: 145
QT实现的聊天界面,好友列表,支持文字和动态图像收发,python写的,C语言也可以参考.zip
好的,以下是一个基于Python的聊天互动交互模式的代码示例,可以通过网络接入任何聊天对话API,同时可以保存每个好友的对话聊天记录。
首先,你需要安装一些Python库,包括`requests`、`json`、`pickle`等。你可以使用以下命令进行安装:
```
pip install requests
pip install json
pip install pickle
```
接下来,我们需要定义一个`Friend`类来保存每个好友的聊天记录。这个类有两个属性:`name`表示好友的名字,`chat_log`表示和好友的聊天记录,是一个列表。
```python
class Friend:
def __init__(self, name):
self.name = name
self.chat_log = []
```
然后,我们需要定义一个`Chatbot`类来实现聊天互动交互模式。这个类有一个属性`friends`,是一个字典,保存了所有好友的信息。我们还定义了一个`select_friend`方法,用于选择要与之聊天的好友。
```python
class Chatbot:
def __init__(self):
self.friends = {}
def select_friend(self):
friend_names = list(self.friends.keys())
print("请选择要聊天的好友:")
for i, name in enumerate(friend_names):
print("{0}. {1}".format(i+1, name))
friend_index = int(input()) - 1
return self.friends[friend_names[friend_index]]
```
接下来,我们需要定义一个`API`类来实现与聊天对话API的交互。这个类有一个`send_message`方法,用于向API发送消息,并返回API的响应。
```python
class API:
def __init__(self, api_url):
self.api_url = api_url
def send_message(self, message):
data = {"message": message}
response = requests.post(self.api_url, json=data)
return json.loads(response.text)["response"]
```
最后,我们需要定义一个`main`函数来实现聊天互动交互模式的主要逻辑。在这个函数中,我们首先初始化一个`Chatbot`对象,并添加一些好友信息。然后,我们进入一个循环,每次循环中调用`select_friend`方法选择要聊天的好友,然后获取用户输入的消息并发送给API。API返回的响应被添加到好友的聊天记录中,并输出到控制台。
```python
def main():
chatbot = Chatbot()
# 添加好友信息
friend1 = Friend("Tom")
friend2 = Friend("Jerry")
chatbot.friends[friend1.name] = friend1
chatbot.friends[friend2.name] = friend2
api = API("http://localhost:5000/chat")
while True:
friend = chatbot.select_friend()
message = input("请输入消息:")
response = api.send_message(message)
friend.chat_log.append((message, response))
print("好友 {0} 回复:{1}".format(friend.name, response))
```
这样,一个基于Python的聊天互动交互模式就实现了。你可以根据需要修改代码中的API地址和好友信息。同时,你也可以将好友的聊天记录保存到本地文件中,这可以通过使用`pickle`库来实现。例如,你可以在`Friend`类中添加一个`save_chat_log`方法来保存聊天记录:
```python
class Friend:
def __init__(self, name):
self.name = name
self.chat_log = []
def save_chat_log(self):
with open("{0}.pkl".format(self.name), "wb") as f:
pickle.dump(self.chat_log, f)
```
然后,在`main`函数中,每次聊天结束后,你就可以调用`save_chat_log`方法来保存聊天记录了:
```python
while True:
friend = chatbot.select_friend()
message = input("请输入消息:")
response = api.send_message(message)
friend.chat_log.append((message, response))
friend.save_chat_log()
print("好友 {0} 回复:{1}".format(friend.name, response))
```
阅读全文