File size: 1,854 Bytes
8095d1b
5fa76ab
 
8095d1b
 
5fa76ab
8095d1b
5fa76ab
7282c69
 
01fb284
 
 
 
 
5fa76ab
 
 
4639f07
8095d1b
 
 
 
 
 
01fb284
8095d1b
01fb284
8095d1b
01fb284
8095d1b
01fb284
8095d1b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

import uvicorn

from flask import Flask, request, jsonify
from huggingface_hub import InferenceClient

app = Flask(__name__)

API_URL = "https://api-inference.huggingface.co/models/mistralai/Mixtral-8x7B-Instruct-v0.1"
# API_URL = "https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.1"

def format_prompt(message, custom_instructions=None):
    prompt = ""
    if custom_instructions:
        prompt += f"[INST] {custom_instructions} [/INST]"
    prompt += f"[INST] {message} [/INST]"
    return prompt

def Mistral7B(prompt, instructions, api, temperature=0.1, max_new_tokens=1, top_p=0.95, repetition_penalty=1.0):
    global API_URL
    try:
        temperature = float(temperature)
        if temperature < 1e-2:
            temperature = 1e-2
        top_p = float(top_p)

        generate_kwargs = dict(
            temperature=temperature,
            max_new_tokens=max_new_tokens,
            top_p=top_p,
            repetition_penalty=repetition_penalty,
            do_sample=True,
            seed=69,
        )
        custom_instructions = instructions
        formatted_prompt = format_prompt(prompt, custom_instructions)

        head = {"Authorization": f"Bearer {api}"}
        client = InferenceClient(API_URL, headers=head)
        response = client.text_generation(formatted_prompt, **generate_kwargs)
        return response
    except Exception as e:
        return str(e)

@app.route("/generate-text", methods=["POST"])
def generate_text():
    data = request.json
    prompt = data.get("prompt")
    instructions = data.get("instructions")
    api_key = data.get("api_key")

    if not prompt or not instructions or not api_key:
        return jsonify({"error": "Missing required fields"}), 400

    response = Mistral7B(prompt, instructions, api_key)

    return jsonify({"response": response}), 200