Nancy1906 commited on
Commit
137d3f7
·
verified ·
1 Parent(s): 4774c47

vvvvvvvvvvvv

Browse files
Files changed (1) hide show
  1. 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)