|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import os |
|
|
|
|
|
import gradio as gr |
|
|
import smolagents |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
print(f"os.getcwd() = {os.getcwd()}") |
|
|
os.system(f"echo ls -al {os.getcwd()} && ls -al {os.getcwd()}") |
|
|
os.system(f"echo ls -al /: && ls -al /") |
|
|
os.system(f"echo ls -al /home/: && ls -al /home/") |
|
|
|
|
|
dictServerParams_TextSimilarity = { |
|
|
"url": "https://allillusion-mcp-server-textsimilarity.hf.space/gradio_api/mcp/sse", |
|
|
"transport": "sse", |
|
|
} |
|
|
|
|
|
try: |
|
|
mcpClient_SyntheticText_Similarity = smolagents.mcp_client.MCPClient(dictServerParams_TextSimilarity) |
|
|
print(f"type(mcpClient_SyntheticText_Similarity) = {type(mcpClient_SyntheticText_Similarity)}") |
|
|
|
|
|
list_MCPAdaptTools_SyntheticText_Similarity = mcpClient_SyntheticText_Similarity.get_tools() |
|
|
print(f"len(list_MCPAdaptTools_SyntheticText_Similarity) = {len(list_MCPAdaptTools_SyntheticText_Similarity)}") |
|
|
print(f"list_MCPAdaptTools_SyntheticText_Similarity[0] = {list_MCPAdaptTools_SyntheticText_Similarity[0]}") |
|
|
|
|
|
clientModel_Qwen25_Inference = smolagents.InferenceClientModel(model_id = "Qwen/Qwen2.5-Coder-32B-Instruct") |
|
|
print(f"clientModel_Qwen25_Inference.model_id = {clientModel_Qwen25_Inference.model_id}\n") |
|
|
print(f"clientModel_Qwen25_Inference.client = {clientModel_Qwen25_Inference.client}") |
|
|
|
|
|
codeAgent_Qwen25_SentimentalAnalysis = smolagents.CodeAgent(tools = list_MCPAdaptTools_SyntheticText_Similarity, |
|
|
model = clientModel_Qwen25_Inference) |
|
|
|
|
|
''' 401 Client Error: Unauthorized for url: https://api-inference.huggingface.co/models/Qwen/Qwen2.5-Coder-32B.. |
|
|
On the space settings, go to Variables and secrets, and create a new secret named HF_TOKEN |
|
|
The value of the secret should be your access token |
|
|
If you need to create an access token, go to your HF profile page |
|
|
On the left menu, go to the access token option, then the Create new token, on the top right |
|
|
''' |
|
|
str_Description = "A simple MCP-Client, Qwen2.5 Agent calling MCP-Server_TextSimilarity as an MCP tool to Generate Synthetic Text with Similarity." \ |
|
|
" https://huggingface.co/spaces/AllIllusion/MCP-Server_TextSimilarity" \ |
|
|
" If you see 'Error', that's because my account has exceeded the monthly included credits for Inference Providers (Qwen2.5)." |
|
|
|
|
|
def func_genSyntheticText_Similarity(str_RealText): |
|
|
strTask_Message = f'''You are learning and practicing synthetic note writing. Your task is to generate synthetic notes, modeled on real note structure and content. You will learn from a pseudonymized note to guide your language, structure, and reasoning. |
|
|
|
|
|
To avoid generating synthetic text from nowhere, you have been provided with pseudonymized, real note for use as a learning example. |
|
|
|
|
|
### Learning Example (quoted by <Example>...</Example>): |
|
|
|
|
|
<Example>{str_RealText}</Example> |
|
|
|
|
|
### Instructions: |
|
|
1. Study the provided learning example. |
|
|
2. Generate a synthetic note that: |
|
|
- Mimics the sentence types and key characteristic distribution of the selected example. |
|
|
- Follows a common sense plausible structure and progression. |
|
|
3. Compare the similarity using the tool MCP-Server_TextSimilarity, between the provided Learning Example and your generated synthetic text. |
|
|
4. Do not return anything other than the synthetic text and the direct output of the tool MCP-Server_TextSimilarity. |
|
|
5. Return the synthetic note, and append the direct output of the tool MCP-Server_TextSimilarity at the end of the output. |
|
|
6. Once you get the direct output of the tool MCP-Server_TextSimilarity, stop processing, no more steps, return immediately the final synthetic text and direct output of the tool MCP-Server_TextSimilarity. |
|
|
7. Note, don't forget the append the direct output of the tool MCP-Server_TextSimilarity at the end of the output. |
|
|
''' |
|
|
print(f"strTask_Message = {strTask_Message}") |
|
|
|
|
|
return str(codeAgent_Qwen25_SentimentalAnalysis.run(strTask_Message)) |
|
|
|
|
|
|
|
|
|
|
|
with gr.Blocks(title="MCP-Client: SyntheticText + Tool-Similarity") as grBlocks_SentenceSimilarity__MCP_Server: |
|
|
gr.Markdown(str_Description) |
|
|
|
|
|
with gr.Row(): |
|
|
grTextBox_RealText = gr.Textbox(label="Real Text Input", lines=20, |
|
|
placeholder="Put your real text here ...", show_label=True) |
|
|
grTextBox_SyntheticText = gr.Textbox(label="Synthetic Text Output with Similarity", lines=20, |
|
|
placeholder="Waiting for Real Text Input ...", show_label=True) |
|
|
|
|
|
|
|
|
grTextBox_RealText.change(fn=func_genSyntheticText_Similarity, inputs=grTextBox_RealText, outputs=grTextBox_SyntheticText) |
|
|
gr.Button("Translate").click(fn=func_genSyntheticText_Similarity, inputs=grTextBox_RealText, outputs=grTextBox_SyntheticText) |
|
|
|
|
|
|
|
|
|
|
|
grBlocks_SentenceSimilarity__MCP_Server.launch(mcp_server=True, share=True) |
|
|
|
|
|
|
|
|
finally: |
|
|
mcpClient_SyntheticText_Similarity.disconnect() |
|
|
|