Spaces:
Running
Running
feat: configure LLM generation parameters and implement text truncation for summarization inputs
Browse files- rag/rag.py +3 -0
- summary_generator/summary.py +15 -0
rag/rag.py
CHANGED
|
@@ -135,6 +135,9 @@ def get_llm():
|
|
| 135 |
model=settings.model_name,
|
| 136 |
base_url=settings.openrouter_base_url,
|
| 137 |
api_key=settings.openrouter_api_key,
|
|
|
|
|
|
|
|
|
|
| 138 |
)
|
| 139 |
|
| 140 |
|
|
|
|
| 135 |
model=settings.model_name,
|
| 136 |
base_url=settings.openrouter_base_url,
|
| 137 |
api_key=settings.openrouter_api_key,
|
| 138 |
+
temperature=0.3,
|
| 139 |
+
max_tokens=2000,
|
| 140 |
+
timeout=120,
|
| 141 |
)
|
| 142 |
|
| 143 |
|
summary_generator/summary.py
CHANGED
|
@@ -68,8 +68,23 @@ def clean_summary(text: str) -> str:
|
|
| 68 |
return '\n'.join(cleaned)
|
| 69 |
|
| 70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
def summarizer(text: str) -> str:
|
| 72 |
logger.info(f"Summarizer started for text of length {len(text)}")
|
|
|
|
| 73 |
try:
|
| 74 |
prompt = summarizer_prompt()
|
| 75 |
llm = get_llm()
|
|
|
|
| 68 |
return '\n'.join(cleaned)
|
| 69 |
|
| 70 |
|
| 71 |
+
MAX_INPUT_CHARS = 15000
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
def _truncate_text(text: str, max_chars: int = MAX_INPUT_CHARS) -> str:
|
| 75 |
+
if len(text) <= max_chars:
|
| 76 |
+
return text
|
| 77 |
+
first_len = int(max_chars * 0.6)
|
| 78 |
+
last_len = max_chars - first_len
|
| 79 |
+
first_part = text[:first_len]
|
| 80 |
+
last_part = text[-last_len:]
|
| 81 |
+
logger.info(f"Text truncated from {len(text)} to {max_chars} chars")
|
| 82 |
+
return f"{first_part}\n\n...[content truncated]...\n\n{last_part}"
|
| 83 |
+
|
| 84 |
+
|
| 85 |
def summarizer(text: str) -> str:
|
| 86 |
logger.info(f"Summarizer started for text of length {len(text)}")
|
| 87 |
+
text = _truncate_text(text)
|
| 88 |
try:
|
| 89 |
prompt = summarizer_prompt()
|
| 90 |
llm = get_llm()
|