Spaces:
Runtime error
Runtime error
vvvvvvvvvvvv
Browse files- my_tools.py +23 -1
my_tools.py
CHANGED
|
@@ -12,6 +12,7 @@ from llama_index.core.callbacks.llama_debug import LlamaDebugHandler
|
|
| 12 |
import google.generativeai as genai
|
| 13 |
import asyncio
|
| 14 |
from pydantic import Field # Para declarar campos si fuera necesario, aunque no para _generation_config
|
|
|
|
| 15 |
|
| 16 |
# --- Intento mejorado para obtener la versión de LlamaIndex ---
|
| 17 |
try:
|
|
@@ -32,7 +33,11 @@ except ImportError:
|
|
| 32 |
|
| 33 |
print(f"LlamaIndex version detectada: {llama_index_version}")
|
| 34 |
|
| 35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
# --- Gemini LLM personalizado ---
|
| 37 |
class GeminiLLM(LLM):
|
| 38 |
model_name: str = Field(default="models/gemini-1.5-flash-latest", description="The Gemini model to use.")
|
|
@@ -92,6 +97,7 @@ class GeminiLLM(LLM):
|
|
| 92 |
# return self._callback_manager
|
| 93 |
|
| 94 |
# --- Implementación de Chat ---
|
|
|
|
| 95 |
def chat(self, messages: list[ChatMessage], **kwargs) -> ChatMessage:
|
| 96 |
gemini_history = []
|
| 97 |
for msg in messages[:-1]:
|
|
@@ -107,6 +113,22 @@ class GeminiLLM(LLM):
|
|
| 107 |
except Exception as e:
|
| 108 |
print(f"Error en Gemini chat: {e}")
|
| 109 |
return ChatMessage(role="assistant", content=f"Error al generar respuesta: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
|
| 111 |
async def achat(self, messages: list[ChatMessage], **kwargs) -> ChatMessage:
|
| 112 |
return await asyncio.to_thread(self.chat, messages, **kwargs)
|
|
|
|
| 12 |
import google.generativeai as genai
|
| 13 |
import asyncio
|
| 14 |
from pydantic import Field # Para declarar campos si fuera necesario, aunque no para _generation_config
|
| 15 |
+
from llama_index.core.llms import ChatMessage
|
| 16 |
|
| 17 |
# --- Intento mejorado para obtener la versión de LlamaIndex ---
|
| 18 |
try:
|
|
|
|
| 33 |
|
| 34 |
print(f"LlamaIndex version detectada: {llama_index_version}")
|
| 35 |
|
| 36 |
+
class PatchedChatMessage(ChatMessage):
|
| 37 |
+
@property
|
| 38 |
+
def message(self):
|
| 39 |
+
return self
|
| 40 |
+
|
| 41 |
# --- Gemini LLM personalizado ---
|
| 42 |
class GeminiLLM(LLM):
|
| 43 |
model_name: str = Field(default="models/gemini-1.5-flash-latest", description="The Gemini model to use.")
|
|
|
|
| 97 |
# return self._callback_manager
|
| 98 |
|
| 99 |
# --- Implementación de Chat ---
|
| 100 |
+
'''
|
| 101 |
def chat(self, messages: list[ChatMessage], **kwargs) -> ChatMessage:
|
| 102 |
gemini_history = []
|
| 103 |
for msg in messages[:-1]:
|
|
|
|
| 113 |
except Exception as e:
|
| 114 |
print(f"Error en Gemini chat: {e}")
|
| 115 |
return ChatMessage(role="assistant", content=f"Error al generar respuesta: {e}")
|
| 116 |
+
'''
|
| 117 |
+
def chat(self, messages: list[ChatMessage], **kwargs) -> ChatMessage:
|
| 118 |
+
gemini_history = []
|
| 119 |
+
for msg in messages[:-1]:
|
| 120 |
+
role = "user" if msg.role == "user" else "model"
|
| 121 |
+
gemini_history.append({'role': role, 'parts': [{'text': msg.content}]})
|
| 122 |
+
|
| 123 |
+
last_user_message = messages[-1].content
|
| 124 |
+
|
| 125 |
+
chat_session = self._model_instance.start_chat(history=gemini_history)
|
| 126 |
+
try:
|
| 127 |
+
response = chat_session.send_message(last_user_message)
|
| 128 |
+
return PatchedChatMessage(role="assistant", content=response.text)
|
| 129 |
+
except Exception as e:
|
| 130 |
+
print(f"Error en Gemini chat: {e}")
|
| 131 |
+
return PatchedChatMessage(role="assistant", content=f"Error al generar respuesta: {e}")
|
| 132 |
|
| 133 |
async def achat(self, messages: list[ChatMessage], **kwargs) -> ChatMessage:
|
| 134 |
return await asyncio.to_thread(self.chat, messages, **kwargs)
|