mirror of
https://github.com/kennethreitz/simplemind.git
synced 2026-06-05 14:50:16 +00:00
Add MathPlugin to examples and update Conversation class in models.py
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
from _context import sm
|
||||
|
||||
|
||||
class MathPlugin:
|
||||
def send_hook(self, conversation: sm.Conversation):
|
||||
last_user_message = conversation.get_last_message(role="user")
|
||||
if "calculate" in last_user_message.text.lower():
|
||||
expression = last_user_message.text.lower().replace("calculate", "").strip()
|
||||
try:
|
||||
result = eval(expression)
|
||||
conversation.add_message(
|
||||
role="assistant", text=f"The result is {result}."
|
||||
)
|
||||
except Exception:
|
||||
conversation.add_message(
|
||||
role="assistant",
|
||||
text="I'm sorry, I couldn't compute that expression.",
|
||||
)
|
||||
|
||||
|
||||
conversation = sm.create_conversation(llm_model="gpt-4o", llm_provider="openai")
|
||||
conversation.add_plugin(MathPlugin())
|
||||
|
||||
conversation.add_message("user", "Calculate 2 + 2 * 3")
|
||||
|
||||
print(conversation.send())
|
||||
@@ -81,6 +81,10 @@ class Conversation(SMBaseModel):
|
||||
self.add_message(role="assistant", text=response.text, meta=response.meta)
|
||||
return response
|
||||
|
||||
def get_last_message(self, role: MESSAGE_ROLE) -> Optional[Message]:
|
||||
"""Get the last message with the given role."""
|
||||
return next((m for m in reversed(self.messages) if m.role == role), None)
|
||||
|
||||
def add_plugin(self, plugin: Any):
|
||||
"""Add a plugin to the conversation."""
|
||||
self.plugins.append(plugin)
|
||||
|
||||
Reference in New Issue
Block a user