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