该代码定义了一个 call_ollama
函数,用于与本地模型服务交互。函数接收用户输入的提示文本,并可选地以流式方式接收响应。请求被发送到指定的 URL,请求体中包含模型名称、用户提示和流式标志。
在请求发送后,代码首先检查 HTTP 错误。对于非流式响应,直接解析并返回 JSON 中的响应内容。对于流式响应,逐行读取响应数据,将每行解码并解析为 JSON,然后提取并拼接响应部分,最终返回完整结果。
代码中还包含异常处理机制,以捕获并打印请求过程中的错误,确保程序的健壮性。
示例部分展示了如何使用该函数进行非流式和流式调用,并打印返回的响应内容。非流式调用一次性返回完整结果,而流式调用则逐部分打印响应。
import requests def call_ollama(prompt, model="llama2", stream=False): url = "http://localhost:11434/api/generate" payload = { "model": "deepseek-r1:1.5b", "prompt": prompt, "stream": stream } try: response = requests.post(url, json=payload) response.raise_for_status() # 检查HTTP错误 # 处理非流式响应 if not stream: return response.json()["response"] # 处理流式响应 full_response = [] for line in response.iter_lines(): if line: import json chunk = json.loads(line.de