in src/WebJobs.Extensions.OpenAI/Assistants/AssistantService.cs [466:498]
async Task<InternalChatState?> LoadChatStateAsync(string id, TableClient tableClient, CancellationToken cancellationToken)
{
// Check to see if any entity exists with partition id
AsyncPageable<TableEntity> itemsWithPartitionKey = tableClient.QueryAsync<TableEntity>(
filter: $"PartitionKey eq '{id}'",
cancellationToken: cancellationToken);
// Deserialize the chat messages
List<ChatMessageTableEntity> chatMessageList = new();
AssistantStateEntity? assistantStateEntity = null;
await foreach (TableEntity entity in itemsWithPartitionKey)
{
// Add chat message to list
if (entity.RowKey.StartsWith(ChatMessageTableEntity.RowKeyPrefix))
{
chatMessageList.Add(new ChatMessageTableEntity(entity));
}
// Get assistant state
if (entity.RowKey == AssistantStateEntity.FixedRowKeyValue)
{
assistantStateEntity = new AssistantStateEntity(entity);
}
}
if (assistantStateEntity is null)
{
return null;
}
return new InternalChatState(id, assistantStateEntity, chatMessageList);
}