client.py 1.2 KB
Newer Older
Bruce MacDonald's avatar
Bruce MacDonald committed
1
2
3
4
5
6
import json
import requests

# NOTE: ollama must be running for this to work, start the ollama app or run `ollama serve`
model = 'llama2' # TODO: update this for whatever model you wish to use

Bruce MacDonald's avatar
Bruce MacDonald committed
7
def generate(prompt, context):
Bruce MacDonald's avatar
Bruce MacDonald committed
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    r = requests.post('http://localhost:11434/api/generate',
                      json={
                          'model': model,
                          'prompt': prompt,
                          'context': context,
                      },
                      stream=True)
    r.raise_for_status()

    for line in r.iter_lines():
        body = json.loads(line)
        response_part = body.get('response', '')
        # the response streams one token at a time, print that as we recieve it
        print(response_part, end='', flush=True)

        if 'error' in body:
            raise Exception(body['error'])

        if body.get('done', False):
Bruce MacDonald's avatar
Bruce MacDonald committed
27
            return body['context']
Bruce MacDonald's avatar
Bruce MacDonald committed
28
29

def main():
Bruce MacDonald's avatar
Bruce MacDonald committed
30
    context = [] # the context stores a conversation history, you can use this to make the model more context aware
Bruce MacDonald's avatar
Bruce MacDonald committed
31
32
33
    while True:
        user_input = input("Enter a prompt: ")
        print()
Bruce MacDonald's avatar
Bruce MacDonald committed
34
        context = generate(user_input, context)
Bruce MacDonald's avatar
Bruce MacDonald committed
35
36
37
38
        print()

if __name__ == "__main__":
    main()