from mythic_container.ChatBase import (
Chat,
ChatConfigView,
ChatModelDefinition,
ChatModelMetadata,
ChatRequest,
ChatSecretView,
)
class MyChat(Chat):
name = "my_chat"
description = "Example provider-backed chat container"
semver = "0.1.0"
models = [
ChatModelDefinition(
Name="My Provider",
Description="Streams responses from My Provider",
Metadata=ChatModelMetadata(Provider="my-provider"),
)
]
async def chat(self, msg: ChatRequest) -> None:
config = ChatConfigView.from_request(msg)
secrets = ChatSecretView.from_request(msg)
api_key = secrets.required_text("MY_PROVIDER_API_KEY")
model = config.text("MY_PROVIDER_MODEL", "default-model")
response_key = f"assistant:my-provider:{msg.RequestID}"
await self.send_streaming(msg, response_key, metadata={"model": model})
async for delta in stream_provider(api_key, model, msg.Prompt):
await self.send_delta(msg, response_key, delta, metadata={"model": model})
await self.send_complete(msg, response_key, complete_request=True)