client.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. if not user_input:
  30. exit()
  31. print()
  32. messages.append({"role": "user", "content": user_input})
  33. message = chat(messages)
  34. messages.append(message)
  35. print("\n\n")
  36. if __name__ == "__main__":
  37. main()