Python中用ollama库实现连续对话

找来找去没找到一个简单示例,用4o和问心来回调整简单生成了一个,抛砖引玉了。

import ollama

def chat_with_ollama():
    # 初始化一个列表来存储对话历史,每个元素是一个包含用户输入和模型回复的元组
    history = []
    while True:
        # 获取用户输入,并转换为小写,方便后续判断退出条件
        user_input = input("\nUser: ")
        # 判断用户是否想要退出对话
        if user_input.lower() in ["exit", "quit", "stop", "baibai", "拜拜"]:
            break

        # 将用户输入和一个空字符串(用于后续存储模型回复)作为元组添加到历史记录中
        history.append([user_input, ""])

        # 初始化一个列表来存储整理后的对话消息,用于请求模型生成回复
        messages = []
        # 遍历历史记录,整理对话消息
        for idx, (user_msg, model_msg) in enumerate(history):
            # 如果当前对话为最新的一条且未收到模型回复,则只添加用户消息
            if idx == len(history) - 1 and not model_msg:
                messages.append({"role": "user", "content": user_msg})
                break
            # 如果是用户消息,则添加到消息列表中
            if user_msg:
                messages.append({"role": "user", "content": user_msg})
            # 如果是模型回复,则添加到消息列表中
            if model_msg:
                messages.append({"role": "assistant", "content": model_msg})

        # 调用模型生成回复
        output = ollama.chat(
            model=model,
            messages=messages
        )
        print('模型回复:', output['message']['content'])

        # 更新history中最新用户输入的模型回复
        history[-1][1] = output['message']['content']

你可能感兴趣的:(python,开发语言,AI编程)