client.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import json
  2. import requests
  3. # NOTE: ollama must be running for this to work, start the ollama app or run `ollama serve`
  4. model = "llama2" # TODO: update this for whatever model you wish to use
  5. def chat(messages):
  6. r = requests.post(
  7. "http://0.0.0.0:11434/api/chat",
  8. json={"model": model, "messages": messages, "stream": True},
  9. )
  10. r.raise_for_status()
  11. output = ""
  12. for line in r.iter_lines():
  13. body = json.loads(line)
  14. if "error" in body:
  15. raise Exception(body["error"])
  16. if body.get("done") is False:
  17. message = body.get("message", "")
  18. content = message.get("content", "")
  19. output += content
  20. # the response streams one token at a time, print that as we receive it
  21. print(content, end="", flush=True)
  22. if body.get("done", False):
  23. message["content"] = output
  24. return message
  25. def main():
  26. messages = []
  27. while True:
  28. user_input = input("Enter a prompt: ")
  29. print()
  30. messages.append({"role": "user", "content": user_input})
  31. message = chat(messages)
  32. messages.append(message)
  33. print("\n\n")
  34. if __name__ == "__main__":
  35. main()