sonika-langchain-bot 0.0.8__py3-none-any.whl → 0.0.10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -64,16 +64,6 @@ class BotBeliefSystem:
64
64
  def _initialize_core_beliefs(self):
65
65
  """Initializes the core beliefs of the bot."""
66
66
  core_beliefs = [
67
- Belief(
68
- f"My name is {self.bot_name}.",
69
- BeliefType.CORE,
70
- confidence=1.0
71
- ),
72
- Belief(
73
- f"I operate on Telegram, and my responses should be as concise and accurate as possible.",
74
- BeliefType.CORE,
75
- confidence=1.0
76
- ),
77
67
  # Add more core beliefs as needed
78
68
  ]
79
69
 
@@ -81,6 +71,9 @@ class BotBeliefSystem:
81
71
  self.add_belief(belief)
82
72
 
83
73
  def add_tools_beliefs(self, tools: List[Tool]):
74
+
75
+ if len(tools) == 0:
76
+ return
84
77
  """Carga y procesa las herramientas disponibles para el bot."""
85
78
  # Instrucciones sobre el uso de herramientas en inglés
86
79
  instrucciones_de_uso = '''\nWhen you want to execute a tool, enclose the command with three asterisks and provide all parameters needed.
@@ -1,3 +1,4 @@
1
+ from typing import Generator
1
2
  from typing import List
2
3
  from langchain.memory import ConversationBufferMemory
3
4
  from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder, SystemMessagePromptTemplate, HumanMessagePromptTemplate
@@ -45,6 +46,7 @@ class LangChainBot:
45
46
  """
46
47
  beliefs_context = self.belief_system.generate_prompt_context()
47
48
  full_system_prompt = f"{beliefs_context}\n\n"
49
+ print(full_system_prompt)
48
50
 
49
51
  prompt = ChatPromptTemplate.from_messages([
50
52
  SystemMessagePromptTemplate.from_template(full_system_prompt),
@@ -93,6 +95,8 @@ class LangChainBot:
93
95
  if context:
94
96
  augmented_input = f"Context from attached files:\n{context}\n\nUser question: {user_input}"
95
97
 
98
+ print(augmented_input)
99
+
96
100
  bot_response = self.conversation.invoke({"input": augmented_input, "history": self.memory.chat_memory.messages})
97
101
 
98
102
  token_usage= bot_response.response_metadata['token_usage']
@@ -128,6 +132,26 @@ class LangChainBot:
128
132
  self.save_messages(user_input, bot_response)
129
133
 
130
134
  return ResponseModel(user_tokens=user_tokens, bot_tokens=bot_tokens, response=bot_response)
135
+
136
+ def get_response_stream(self, user_input: str) -> Generator[str, None, None]:
137
+ """
138
+ Genera una respuesta en streaming para la entrada del usuario, procesando el contexto.
139
+
140
+ Args:
141
+ user_input (str): Entrada del usuario
142
+
143
+ Yields:
144
+ str: Fragmentos de la respuesta generada por el modelo en tiempo real
145
+ """
146
+ context = self._get_context(user_input)
147
+ augmented_input = f"User question: {user_input}"
148
+ if context:
149
+ augmented_input = f"Context from attached files:\n{context}\n\nUser question: {user_input}"
150
+
151
+ result_stream = self.conversation.stream({"input": augmented_input, "history": self.memory.chat_memory.messages})
152
+ for response in result_stream:
153
+ yield response.content
154
+
131
155
 
132
156
  def _get_context(self, query: str) -> str:
133
157
  """
@@ -1,8 +1,7 @@
1
1
  from langchain_openai import ChatOpenAI
2
2
  from sonika_langchain_bot.langchain_class import ILanguageModel
3
3
  from langchain_core.messages import HumanMessage
4
- from typing import Type
5
- from pydantic import BaseModel
4
+ from typing import Generator
6
5
 
7
6
 
8
7
  class OpenAILanguageModel(ILanguageModel):
@@ -46,4 +45,18 @@ class OpenAILanguageModel(ILanguageModel):
46
45
  """
47
46
  message = HumanMessage(content=prompt)
48
47
  response = self.model.invoke([message])
49
- return response
48
+ return response
49
+
50
+ def stream_response(self, prompt: str) -> Generator[str, None, None]:
51
+ """
52
+ Genera una respuesta en streaming basada en el prompt proporcionado.
53
+
54
+ Args:
55
+ prompt (str): Texto de entrada para generar la respuesta
56
+
57
+ Yields:
58
+ str: Fragmentos de la respuesta generada por el modelo en tiempo real
59
+ """
60
+ message = HumanMessage(content=prompt)
61
+ for chunk in self.model.stream([message]):
62
+ yield chunk.content
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sonika-langchain-bot
3
- Version: 0.0.8
3
+ Version: 0.0.10
4
4
  Summary: Agente langchain con LLM
5
5
  Author: Erley Blanco Carvajal
6
6
  License: MIT License
@@ -30,7 +30,8 @@ Provides-Extra: dev
30
30
  Requires-Dist: sphinx <9.0.0,>=8.1.3 ; extra == 'dev'
31
31
  Requires-Dist: sphinx-rtd-theme <4.0.0,>=3.0.1 ; extra == 'dev'
32
32
 
33
- # Sonika LangChain Bot
33
+ # Sonika LangChain Bot <a href="https://pepy.tech/projects/sonika-langchain-bot"><img src="https://static.pepy.tech/badge/sonika-langchain-bot" alt="PyPI Downloads"></a>
34
+
34
35
 
35
36
  Una librería Python que implementa un bot conversacional utilizando LangChain con capacidades BDI (Belief-Desire-Intention) y clasificación de texto.
36
37
 
@@ -104,6 +105,10 @@ bot_response = response_model
104
105
 
105
106
  print(bot_response)
106
107
 
108
+ #o por streaming
109
+ for chunk in bot.get_response_stream(user_message):
110
+ print(chunk)
111
+
107
112
  ```
108
113
 
109
114
  ### Ejemplo de Clasificación de Texto
@@ -137,3 +142,4 @@ result = classifier.classify("Tu texto aquí")
137
142
  ## Contribución
138
143
 
139
144
  Las contribuciones son bienvenidas. Por favor, abre un issue para discutir los cambios importantes que te gustaría hacer.
145
+
@@ -0,0 +1,13 @@
1
+ sonika_langchain_bot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ sonika_langchain_bot/langchain_bdi.py,sha256=ithc55azP5XSPb8AGRUrDGYnVI6I4IqpqElLNat4BAQ,7024
3
+ sonika_langchain_bot/langchain_bot_agent_bdi.py,sha256=Ev0hhRQYe6kyGAHiFDhFsfu6QnTwUFaA9oB8DfNV7u4,8613
4
+ sonika_langchain_bot/langchain_clasificator.py,sha256=GR85ZAliymBSoDa5PXB31BvJkuiokGjS2v3RLdXnzzk,1381
5
+ sonika_langchain_bot/langchain_class.py,sha256=5anB6v_wCzEoAJRb8fV9lPPS72E7-k51y_aeiip8RAw,1114
6
+ sonika_langchain_bot/langchain_files.py,sha256=SEyqnJgBc_nbCIG31eypunBbO33T5AHFOhQZcghTks4,381
7
+ sonika_langchain_bot/langchain_models.py,sha256=vqSSZ48tNofrTMLv1QugDdyey2MuIeSdlLSD37AnzkI,2235
8
+ sonika_langchain_bot/langchain_tools.py,sha256=y7wLf1DbUua3QIvz938Ek-JIMOuQhrOIptJadW8OIsU,466
9
+ sonika_langchain_bot-0.0.10.dist-info/LICENSE,sha256=O8VZ4aU_rUMAArvYTm2bshcZ991huv_tpfB5BKHH9Q8,1064
10
+ sonika_langchain_bot-0.0.10.dist-info/METADATA,sha256=UFs95OjxiI17n839Ylb2ou-eR8sJ11MrMu7V3TOa0sA,4455
11
+ sonika_langchain_bot-0.0.10.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
12
+ sonika_langchain_bot-0.0.10.dist-info/top_level.txt,sha256=UsTTSZFEw2wrPSVh4ufu01e2m_E7O_QVYT_k4zCQaAE,21
13
+ sonika_langchain_bot-0.0.10.dist-info/RECORD,,
@@ -1,13 +0,0 @@
1
- sonika_langchain_bot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- sonika_langchain_bot/langchain_bdi.py,sha256=aCo6d2vhn5d1xGmN3Ldpa8DStJUSLuhDPZ3y4iXILIg,7329
3
- sonika_langchain_bot/langchain_bot_agent_bdi.py,sha256=4CjeIDOTefb7DzTq3W7Fq-jhSGpBgaR1WuDr_xNT5Ig,7721
4
- sonika_langchain_bot/langchain_clasificator.py,sha256=GR85ZAliymBSoDa5PXB31BvJkuiokGjS2v3RLdXnzzk,1381
5
- sonika_langchain_bot/langchain_class.py,sha256=5anB6v_wCzEoAJRb8fV9lPPS72E7-k51y_aeiip8RAw,1114
6
- sonika_langchain_bot/langchain_files.py,sha256=SEyqnJgBc_nbCIG31eypunBbO33T5AHFOhQZcghTks4,381
7
- sonika_langchain_bot/langchain_models.py,sha256=AglQNSFXH5cVudBmtSAQ4t51piRXmJfrCfDhGULLt0I,1761
8
- sonika_langchain_bot/langchain_tools.py,sha256=y7wLf1DbUua3QIvz938Ek-JIMOuQhrOIptJadW8OIsU,466
9
- sonika_langchain_bot-0.0.8.dist-info/LICENSE,sha256=O8VZ4aU_rUMAArvYTm2bshcZ991huv_tpfB5BKHH9Q8,1064
10
- sonika_langchain_bot-0.0.8.dist-info/METADATA,sha256=RfOmBFZ9t5E3GMxh8NnDj9SHCpeykyOgGgHuaeqWiXI,4218
11
- sonika_langchain_bot-0.0.8.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
12
- sonika_langchain_bot-0.0.8.dist-info/top_level.txt,sha256=UsTTSZFEw2wrPSVh4ufu01e2m_E7O_QVYT_k4zCQaAE,21
13
- sonika_langchain_bot-0.0.8.dist-info/RECORD,,