MCPcopy
hub / github.com/zai-org/GLM-4 / Conversation

Class Conversation

demo/composite_demo/src/conversation.py:93–142  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

91
92@dataclass
93class Conversation:
94 role: Role
95 content: str | dict
96 # Processed content
97 saved_content: str | None = None
98 metadata: str | None = None
99 image: str | Image | None = None
100
101 def __str__(self) -> str:
102 metadata_str = self.metadata if self.metadata else ""
103 return f"{self.role}{metadata_str}\n{self.content}"
104
105 # Human readable format
106 def get_text(self) -> str:
107 text = self.saved_content or self.content
108 match self.role.value:
109 case Role.TOOL.value:
110 text = f"Calling tool `{self.metadata}`:\n\n```python\n{text}\n```"
111 case Role.OBSERVATION.value:
112 text = f"```python\n{text}\n```"
113 return text
114
115 # Display as a markdown block
116 def show(self, placeholder: DeltaGenerator | None = None) -> str:
117 if placeholder:
118 message = placeholder
119 else:
120 message = self.role.get_message()
121
122 if self.image:
123 message.image(self.image, width=512)
124
125 if self.role == Role.OBSERVATION:
126 metadata_str = f"from {self.metadata}" if self.metadata else ""
127 message = message.expander(f"Observation {metadata_str}")
128
129 text = self.get_text()
130 if self.role != Role.USER:
131 show_text = text
132 else:
133 splitted = text.split("files uploaded.\n")
134 if len(splitted) == 1:
135 show_text = text
136 else:
137 # Show expander for document content
138 doc = splitted[0]
139 show_text = splitted[-1]
140 expander = message.expander("File Content")
141 expander.markdown(doc)
142 message.markdown(show_text)
143
144
145def postprocess_text(text: str, replace_quote: bool) -> str:

Callers 2

mainFunction · 0.90
commit_conversationFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected