Spaces:
Sleeping
Sleeping
import json | |
import http.client | |
import streamlit as st | |
from openai import AzureOpenAI | |
class ContentFormatter: | |
def chat_completions(text, settings_params): | |
message = [ | |
{"role": "system", "content": "You are a helpful assistant."}, | |
{"role": "user", "content": text} | |
] | |
data = {"messages": message, **settings_params} | |
return json.dumps(data) | |
class AzureAgent: | |
def __init__(self, api_key, azure_uri): | |
self.azure_uri = azure_uri | |
self.headers = { | |
'Authorization': f"Bearer {api_key}", | |
'Content-Type': 'application/json' | |
} | |
self.chat_formatter = ContentFormatter | |
def invoke(self, text, **kwargs): | |
body = self.chat_formatter.chat_completions(text, {**kwargs}) | |
conn = http.client.HTTPSConnection(self.azure_uri) | |
conn.request("POST", '/v1/chat/completions', body=body, headers=self.headers) | |
response = conn.getresponse() | |
data = response.read() | |
conn.close() | |
decoded_data = data.decode("utf-8") | |
parsed_data = json.loads(decoded_data) | |
content = parsed_data["choices"][0]["message"]["content"] | |
return content | |
class GPTAgent: | |
def __init__(self, api_key, azure_endpoint): | |
self.client = AzureOpenAI( | |
api_key=api_key, | |
api_version='2022-11-01', # Defaulting to a specific API version | |
azure_endpoint=azure_endpoint | |
) | |
self.deployment_name = 'your-model-deployment-name' # Update this based on actual deployment name | |
def invoke(self, text, **kwargs): | |
response = self.client.chat.completions.create( | |
model=self.deployment_name, | |
messages=[ | |
{"role": "system", "content": "You are a helpful assistant."}, | |
{"role": "user", "content": text} | |
], | |
**kwargs | |
) | |
return response.choices[0].message.content | |
# Streamlit app interface | |
st.title('Model Invocation with Dataset Processing') | |
model_type = st.radio("Select the type of agent", ('AzureAgent', 'GPTAgent')) | |
api_key = st.text_input("API Key", type="password") | |
endpoint_url = st.text_input("Endpoint URL") | |
# File upload and data display | |
uploaded_file = st.file_uploader("Choose a file") | |
if uploaded_file is not None: | |
# Read data | |
data = StringIO(uploaded_file.getvalue().decode("utf-8")) | |
df = pd.read_csv(data) | |
st.write('Uploaded Data:', df.head()) | |
# Process data button | |
if st.button('Process Data'): | |
if model_type == 'AzureAgent': | |
agent = AzureAgent(api_key, endpoint_url) | |
else: | |
agent = GPTAgent(api_key, endpoint_url) | |
# Example processing step (adapt as needed) | |
df['Response'] = df['Input Column'].apply(lambda x: agent.invoke(x, temperature=0, max_tokens=150)) | |
st.write('Processed Data:', df.head()) | |
# Generate download link | |
st.download_button( | |
label="Download processed data", | |
data=df.to_csv().encode('utf-8'), | |
file_name='processed_data.csv', | |
mime='text/csv', | |
) |