| import os |
| import fitz |
| import gradio as gr |
| import autogen |
| from autogen.agentchat.contrib.capabilities import transform_messages, transforms |
| from autogen.agentchat.contrib.capabilities.text_compressors import LLMLingua |
| from autogen.agentchat.contrib.capabilities.transforms import TextMessageCompressor |
| import mysql.connector |
|
|
| import copy |
| import pprint |
| import re |
| from typing import Dict, List, Tuple |
|
|
| |
| conn = mysql.connector.connect( |
| host="www.ryhintl.com", |
| user="smairuser", |
| password="smairuser", |
| port=36000, |
| database="smair" |
| ) |
|
|
| |
| cursor = conn.cursor(dictionary=True) |
|
|
| |
| select_one_data_query = "SELECT * FROM agentic_apis" |
| cursor.execute(select_one_data_query) |
| result = cursor.fetchall() |
| |
| keys = [item['key'] for item in result] |
|
|
| os.environ["GROQ_API_KEY"] = keys[2] |
|
|
| def extract_text_from_pdf(file): |
| text = "" |
| with fitz.open("./"+file) as doc: |
| for page in doc: |
| text += page.get_text() |
|
|
| return text |
|
|
| def summarize_pdf(file): |
| pdf_text = extract_text_from_pdf(file) |
| |
| |
| |
| system_message = "貴方は世界的なレベルのリサーチャーです。" |
| config_list = [{ |
| "model": "llama-3.3-70b-versatile", |
| |
| "api_key": os.environ.get("GROQ_API_KEY"), |
| "api_type": "groq" |
| }] |
| |
| researcher = autogen.ConversableAgent( |
| "assistant", |
| llm_config={"config_list": config_list}, |
| max_consecutive_auto_reply=1, |
| system_message=system_message, |
| human_input_mode="NEVER", |
| ) |
| user_proxy = autogen.UserProxyAgent( |
| "user_proxy", |
| human_input_mode="NEVER", |
| is_termination_msg=lambda x: "TERMINATE" in x.get("content", ""), |
| max_consecutive_auto_reply=1, |
| code_execution_config={"work_dir":"coding", "use_docker":False} |
| ) |
| |
| llm_lingua = LLMLingua() |
| |
| text_compressor = TextMessageCompressor(text_compressor=llm_lingua,compression_params={"target_token": 5999},cache=None) |
| compressed_text = text_compressor.apply_transform([{"content": pdf_text}]) |
| |
| |
| |
| |
| max_msg_transfrom = transforms.MessageHistoryLimiter(max_messages=3) |
|
|
| |
| token_limit_transform = transforms.MessageTokenLimiter(max_tokens_per_message=3, min_tokens=10) |
| |
| '''messages = [ |
| {"role": "user", "content": "hello"}, |
| {"role": "assistant", "content": [{"type": "text", "text": "there"}]}, |
| {"role": "user", "content": "how"}, |
| {"role": "assistant", "content": [{"type": "text", "text": "are you doing?"}]}, |
| {"role": "user", "content": "very very very very very very long string"}, |
| ] |
| |
| processed_messages = max_msg_transfrom.apply_transform(copy.deepcopy(messages)) |
| pprint.pprint(processed_messages) |
| |
| processed_messages = token_limit_transform.apply_transform(copy.deepcopy(messages)) |
| |
| pprint.pprint(processed_messages)''' |
| |
|
|
| context_handling = transform_messages.TransformMessages( |
| transforms=[ |
| transforms.MessageHistoryLimiter(max_messages=10), |
| transforms.MessageTokenLimiter(max_tokens=6000, max_tokens_per_message=2000, min_tokens=500), |
| |
| ] |
| ) |
|
|
| context_handling.add_to_agent(researcher) |
| |
| |
| |
| |
| |
| |
| message = "この資料を日本語で要約し、重要な情報を含めてください。節約されたトークン数も表示してください。" + pdf_text |
| result = user_proxy.initiate_chat(recipient=researcher, clear_history=True, message=message, silent=True) |
| |
| |
| |
| tresult = text_compressor.get_logs([], []) |
| |
|
|
| |
| |
| |
| |
| return result.chat_history[1]["content"] |
| |
|
|
| iface = gr.Interface( |
| fn=summarize_pdf, |
| |
| inputs=gr.Dropdown( |
| choices=["yoin.pdf", "spo_revenue.pdf", "lings.pdf", "korea-ai.pdf"], |
| label="PDFを選択" |
| ), |
| outputs="text", |
| title="Research Paper Summarizer", |
| description="Select a PDF and get a summary in Japanese." |
| ) |
|
|
| iface.launch() |