Spaces:
Sleeping
Sleeping
File size: 2,069 Bytes
d349925 5cdeca9 6e99860 5cdeca9 d349925 927f7a3 11d423c 5cdeca9 6e99860 d349925 11d423c b3a1556 5cdeca9 d349925 4295e2c 5cdeca9 76e9582 5cdeca9 6e99860 31251b4 6e99860 31251b4 4295e2c 31251b4 6e99860 d349925 4295e2c 11d423c d349925 4295e2c d349925 4295e2c 5cdeca9 d349925 b3a1556 76e9582 11d423c 4295e2c 927f7a3 5cdeca9 4815dab |
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 59 60 61 62 63 64 65 66 |
import gradio as gr
from transformers import AutoTokenizer, AutoModel
from openai import OpenAI
import os
# Load the NASA-specific bi-encoder model and tokenizer
bi_encoder_model_name = "nasa-impact/nasa-smd-ibm-st-v2"
bi_tokenizer = AutoTokenizer.from_pretrained(bi_encoder_model_name)
bi_model = AutoModel.from_pretrained(bi_encoder_model_name)
# Set up OpenAI API key
openaiapi = os.getenv('OPENAI_API_KEY')
client = OpenAI(api_key=openaiapi)
def encode_text(text):
inputs = bi_tokenizer(text, return_tensors='pt', padding=True, truncation=True, max_length=128)
outputs = bi_model(**inputs)
# Ensure the output is 2D by averaging the last hidden state along the sequence dimension
return outputs.last_hidden_state.mean(dim=1).detach().numpy().flatten()
def generate_response(user_input, context_embedding):
# Create a structured prompt for GPT-4
context_str = ' '.join(map(str, context_embedding)) # Convert context embedding to a string
combined_input = f"Question: {user_input}\nContext: {context_str}\nAnswer:"
# Generate a response using GPT-4
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "user", "content": combined_input}
],
max_tokens=400,
temperature=0.5,
top_p=0.9,
frequency_penalty=0.5,
presence_penalty=0.0
)
return response.choices[0].message.content.strip()
def chatbot(user_input, context=""):
context_embedding = encode_text(context) if context else ""
response = generate_response(user_input, context_embedding)
return response
# Create the Gradio interface
iface = gr.Interface(
fn=chatbot,
inputs=[gr.Textbox(lines=2, placeholder="Enter your message here..."), gr.Textbox(lines=2, placeholder="Enter context here (optional)...")],
outputs="text",
title="Context-Aware Dynamic Response Chatbot",
description="A chatbot using a NASA-specific bi-encoder model to understand the input context and GPT-4 to generate dynamic responses."
)
# Launch the interface
iface.launch()
|