Python OpenAI 库调用 Ollama 实现多轮对话和上下文记忆的对话方法

半兽人 发表于: 2025-04-28   最后更新时间: 2025-04-28 14:21:35  
{{totalSubscript}} 订阅, 40 游览

Python OpenAI 库调用 Ollama 实现多轮对话和上下文记忆的对话方法

以下是一个简单的 Python 脚本,展示如何用 OpenAI 库调用 Ollama 的 qwen2.5 模型,实现多轮对话和上下文记忆的对话方法:

import asyncio

from openai import AsyncOpenAI


class LLM:
    def __init__(self):
        self.model = "qwen2.5"
        self.max_tokens = 4096
        self.base_url = "http://127.0.0.1:11434/v1"
        self.api_key = "key"
        self.client = AsyncOpenAI(api_key=self.api_key, base_url=self.base_url)

    async def ask_memory(self, messages, temperature=1.0, timeout=None, **kwargs):
        """
        支持多轮对话和上下文记忆的对话方法

        Args:
            messages (list): 对话历史消息列表,每个消息包含role和content
            temperature (float, optional): 控制回复的随机性,默认为1.0
            timeout (int, optional): 请求超时时间
            **kwargs: 其他可选参数

        Returns:
            str: 模型的回复内容
        """
        response = await self.client.chat.completions.create(
            model=self.model,
            messages=messages,
            temperature=temperature,
            max_tokens=self.max_tokens,
            timeout=timeout,
            **kwargs,
        )
        print(response)
        return response.choices[0].message.content

if __name__ == "__main__":
    async def main():
        llm = LLM()

        # 测试多轮对话
        messages = [
            {"role": "user", "content": "你好,请介绍一下你自己"},
            {"role": "assistant", "content": "我是一个AI助手,很高兴为你服务。"},
            {"role": "user", "content": "你能做什么?"},
            {"role": "assistant", "content": "我很懂怎么洗衣服"},
            {"role": "user", "content": "那你介绍一下?"}
        ]
        results = await llm.ask_memory(messages)
        print(results)

    asyncio.run(main())

安装openai依赖:

uv pip install openai

执行:

% python llm/ollama.memeory.py

如果你需要关于洗衣的信息,比如选择哪种洗涤模式适合不同的衣物材质,或是清洗特殊类型的物品(如织物柔顺剂何时加入更合适),我都可以为你提供帮助。请问你具体有什么问题吗?
更新于 2025-04-28

查看AI更多相关的文章或提一个关于AI的问题,也可以与我们一起分享文章