Spaces:
Runtime error
Runtime error
File size: 3,963 Bytes
0374538 77f883a c9125fb aed7ff3 5fb7b3d 8a25d94 22aad44 6fae060 0e3473d 77f883a c9125fb 77f883a c9125fb 6cb707e 294c6d6 bbe4abb 6cb707e 294c6d6 bbe4abb 294c6d6 bbe4abb c9125fb 0e3473d c9125fb aed7ff3 22727a0 77f883a c9125fb a235fe7 0e3473d aed7ff3 c9125fb aed7ff3 2445aa7 b083e9c |
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
import gradio as gr
import os
from huggingface_hub import InferenceClient
from huggingface_hub.inference._generated.types.chat_completion import ChatCompletionStreamOutput
# Use the fine-tuned maritime legal model
MODEL = "nomiChroma3.1"
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
from huggingface_hub.inference._generated.types.chat_completion import ChatCompletionStreamOutput
def respond(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
):
messages = [{"role": "system", "content": system_message}]
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
messages.append({"role": "user", "content": message})
response = ""
try:
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
try:
if isinstance(message, ChatCompletionStreamOutput):
content = message.choices[0].delta.content
if content is not None:
response += content
yield response
if message.choices[0].finish_reason == 'stop':
break
elif isinstance(message, dict):
content = message.get('choices', [{}])[0].get('delta', {}).get('content')
if content:
response += content
yield response
if message.get('choices', [{}])[0].get('finish_reason') == 'stop':
break
elif isinstance(message, str):
if message.strip(): # Only process non-empty strings
response += message
yield response
else:
print(f"Unexpected message type: {type(message)}")
print(f"Message content: {message}")
except Exception as e:
print(f"Error processing message: {e}")
print(f"Problematic message: {message}")
continue # Continue to the next message even if there's an error
# Final yield to ensure all content is returned
if response:
yield response
except Exception as e:
print(f"An error occurred in the main loop: {e}")
if response:
yield response
else:
yield f"An error occurred: {e}"
# Gradio interface setup
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(
value="You are a maritime legal assistant with expertise strictly in Indian maritime law. Provide detailed legal advice and information based on Indian maritime legal principles and regulations.",
label="System message"
),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-p (nucleus sampling)",
),
],
title="Maritime Legal Compliance",
description="This chatbot uses Fine-tuned LLAMA-3.1 model personalised specifically to provide assistance with Indian maritime legal queries.",
theme="soft",
examples=[
["What are the key regulations governing ports in India?"],
["Explain the concept of cabotage in Indian maritime law."],
["What are the legal requirements for registering a vessel in India?"],
],
cache_examples=False,
)
# Launch the Gradio app
if __name__ == "_main_":
demo.launch() |