Publish Contents

Summarize multiple content items and publish as text or audio content.

Use Cases

One interesting use case is to use the GPT-4 Vision model to describe a set of images, and then publish a summary of those images as an inspection report, for example. Another interesting use case is to enable Web page screenshots, and then publish a summary of a set of web pages for UX analysis or competitive research. Or, you can ingest a Slack or email feed, and publish an audio summary to catch up on any important tasks or topics that arrived overnight in your feed.

Publish Contents

Publishing contents is similar to querying contents, in that it takes a content filter parameter.

Graphlit will query the contents, based on your filter, and then summarize each content separately, with the summaryPrompt (optional) and summarySpecificationyou specify.

For the content summaries, we use text from documents, Web pages, audio transcripts, and even image descriptions.

Then, we take the summaries, the publishPrompt and publishSpecification you provided, and call the LLM to generate the final published text. This text will then be used to create text, Markdown or HTML content, or used as a script to generate an MP3 audio rendition using an ElevenLabs text-to-speech model.

The published content will be reingested into Graphlit and you can provide an optional workflow object, which will be used to guide the workflow process. (For example, you can run entity extraction on this newly published content.)

With the slower performance of some LLMs like GPT-4 Turbo 128k, you may get API timeouts attempting to publishing contents, especially with a larger number of contents. If this happens, you can filter the contents to return less results, or try a different LLM.

Publishing performance is dependent on the number of pages of text, or the length of an audio/video transcript.

We have considered offering publishing to document formats such as DOCX or PDF, and to add these documents your Google Docs or Microsoft 365 workspace automatically.

If you would be interested in this capability, please reach out to us.

Text Publishing

In this example, we created a Reddit feed for r/LocalLlama. When publishing about 100 Reddit posts, we summarized them with the default GPT-3.5 Turbo 16k model.

Our goal was to generate an AI-generated blog post of recent discussions from this subreddit.

Here is the example blog post which was generated in Markdown format:

# Exploring the Frontier of AI: A Dive into Recent Developments and Discussions

The world of artificial intelligence is buzzing with innovation, and nowhere is this more evident than on the forums of Reddit, where enthusiasts and experts alike gather to discuss the latest advancements. From new model releases to groundbreaking methods for model tuning, the AI community is pushing the boundaries of what's possible. Let's delve into some of the most fascinating topics that have recently captured the attention of Redditors.

## In-Context Learning and AI Model Comparisons

One of the hottest topics in the AI space is the comparison of two AI models, Mixtral 34Bx2 and GPT-4, particularly in their ability to perform in-context learning for natural language processing (NLP) tasks. A Reddit post from January 23, 2024, dives into this comparison, analyzing how these models handle chain-of-thought prompting, a technique that's proving to be a game-changer in automating the learning process for NLP tasks. The post also touches on a larger project aimed at creating a model to measure trust, which is part of a related thesis. This discussion is not just theoretical; it includes practical feedback from AI models and human analysis, making it a rich source of insights for anyone interested in the future of AI learning.

## The New Yi Vision Models

On January 22, 2024, the AI community was abuzz with the release of the new Yi vision models, specifically the Yi-VL-6B and Yi-VL-34B. These models have sparked excitement and curiosity due to their capabilities and specifications. Redditors have been discussing the technical details, such as GPU requirements and compatibility with other software, including llama.cpp and the ONNX format. The humorous concept of \"GPU Mortality Rate\" emerged from these discussions, highlighting the intense computational demands of these models. This conversation is a testament to the rapid evolution of AI and the constant push for more powerful and efficient models.

## Extreme Compression of LLMs

Another groundbreaking development discussed on January 22, 2024, is a new paper on the extreme compression of large language models (LLMs). This paper claims to have beaten QuIP# by narrowing the perplexity gap, a significant achievement in the field. The method involves new techniques related to codebooks and the idea of compressing a Mixture of Experts (MoE) by exploiting expert similarity. This potential breakthrough has the community calling for a detailed explanation of how the new method works, as it could revolutionize the way we handle and deploy LLMs.

## Multilingual Models and the TaCo Method

The creation of multilingual LLMs is a challenge that has been met with innovative solutions, as seen in the introduction of the TaCo (Translation-Assisted Chain-of-Thought Processes) method. A Reddit post from January 22, 2024, discusses the TaCo Paper, which presents a cost-effective method for instruction-tuning LLMs in new languages using translation. The results show impressive performance boosts, especially in low-resource languages. The public release of the Multilingual Instruction-Tuning Dataset (MITS) and model adapters for languages like Nepali and Persian has opened up new possibilities for AI applications across different languages.

## Proxy-Tuning: A New Approach to Model Tuning

On January 23, 2024, the AI community was introduced to Proxy-Tuning, a lightweight decoding-time algorithm that tunes large pretrained language models. This method allows for domain adaptation on code and task-specific finetuning on question-answering and math problems. Interestingly, proxy-tuned models have been found to be more truthful than directly tuned models. The concept of an activation \"steering vector\" is central to this approach, allowing for the specialization of models to perform specific tasks. This development, pioneered by the Allen Institute for AI, represents a significant step forward in the field of activation engineering.

## The AI Hiring Debate

The use of AI in the hiring process is a contentious topic, as evidenced by a Reddit discussion on January 22, 2024. The original poster sought advice on using LLMs to match job candidates with employer requirements, sparking a debate about the role of AI in recruitment. Concerns were raised about the potential for AI to filter out good candidates and the impact on the role of human recruiters. This conversation reflects the broader societal questions about the ethical use of AI and the need for regulation in sensitive areas like employment.

In conclusion, the AI landscape is rapidly evolving, with new models, methods, and ethical considerations emerging at a breakneck pace. The discussions on Reddit provide a window into the collective mind of the AI community, where the excitement for innovation is matched by a commitment to understanding and addressing the implications of these powerful technologies. As we continue to explore the frontier of AI, it's clear that the journey is just as thrilling as the destination.

First, you will want to set the type field to TEXT.

Next you will want to configure your publishing prompt. You can optionally configure a summary prompt, to be executed on each piece of content, but Graphlit provides a useful default summary prompt for most use cases.

Here is the publishing prompt we used for this example. Note that it uses a Chain-of-Thought approach to prompting, and it has the LLM take a step-by-step process.

Follow these steps.

Step 1: Think about a structure for an engaging AI-generated blog post, with an introduction, an in-depth discussion of 4-6 interesting topics across all provided content, and a wrap-up.  
Step 2: For each topic, write 2-3 detailed paragraphs discussing it in-depth. Touch on key points for each topic which would be interesting to readers. Mention the content metadata, entities and details from the provided summaries, as appropriate in the discussion.
Step 3: Combine all topics into a lengthy blog post. Use friendly but technical conversation to write the post.
Step 4: Remove any unnecessary formatting or final notes about being AI generated. 

Text Configuration

For publishing to text, you just need to assign the format field to one of TEXT, MARKDOWN or HTML.

Mutation:

mutation PublishContents($summaryPrompt: String, $publishPrompt: String!, $connector: ContentPublishingConnectorInput!, $filter: ContentFilter, $name: String, $summarySpecification: EntityReferenceInput, $publishSpecification: EntityReferenceInput, $workflow: EntityReferenceInput) {
  publishContents(summaryPrompt: $summaryPrompt, publishPrompt: $publishPrompt, connector: $connector, filter: $filter, name: $name, summarySpecification: $summarySpecification, publishSpecification: $publishSpecification, workflow: $workflow) {
    id
    name
    creationDate
    owner {
      id
    }
    state
    uri
    type
    fileType
    mimeType
    fileName
    fileSize
  }
}

Variables:

{
  "publishPrompt": "Follow these steps.\\n\\nStep 1: Think about a structure for an engaging AI-generated blog post, with an introduction, an in-depth discussion of 4-6 interesting topics across all provided content, and a wrap-up.  \\nStep 2: For each topic, write 2-3 detailed paragraphs discussing it in-depth. Touch on key points for each topic which would be interesting to readers. Mention the content metadata, entities and details from the provided summaries, as appropriate in the discussion.\\nStep 3: Combine all topics into a lengthy blog post. Use friendly but technical conversation to write the post.\\nStep 4: Remove any unnecessary formatting or final notes about being AI generated.",
  "connector": {
    "type": "TEXT",
    "format": "MARKDOWN"
  },
  "publishSpecification": {
    "id": "905cb2de-6495-4a1b-b4cb-ce3fd1c5f8f2"
  }
}

Response:

{
  "type": "TEXT",
  "text": "# Exploring the Frontier of AI: A Dive into Recent Developments and Discussions\n\nThe world of artificial intelligence is buzzing with innovation, and nowhere is this more evident than on the forums of Reddit, where enthusiasts and experts alike gather to discuss the latest advancements. From new model releases to groundbreaking methods for model tuning, the AI community is pushing the boundaries of what's possible. Let's delve into some of the most fascinating topics that have recently captured the attention of Redditors.\n\n## In-Context Learning and AI Model Comparisons\n\nOne of the hottest topics in the AI space is the comparison of two AI models, Mixtral 34Bx2 and GPT-4, particularly in their ability to perform in-context learning for natural language processing (NLP) tasks. A Reddit post from January 23, 2024, dives into this comparison, analyzing how these models handle chain-of-thought prompting, a technique that's proving to be a game-changer in automating the learning process for NLP tasks. The post also touches on a larger project aimed at creating a model to measure trust, which is part of a related thesis. This discussion is not just theoretical; it includes practical feedback from AI models and human analysis, making it a rich source of insights for anyone interested in the future of AI learning.\n\n## The New Yi Vision Models\n\nOn January 22, 2024, the AI community was abuzz with the release of the new Yi vision models, specifically the Yi-VL-6B and Yi-VL-34B. These models have sparked excitement and curiosity due to their capabilities and specifications. Redditors have been discussing the technical details, such as GPU requirements and compatibility with other software, including llama.cpp and the ONNX format. The humorous concept of \"GPU Mortality Rate\" emerged from these discussions, highlighting the intense computational demands of these models. This conversation is a testament to the rapid evolution of AI and the constant push for more powerful and efficient models.\n\n## Extreme Compression of LLMs\n\nAnother groundbreaking development discussed on January 22, 2024, is a new paper on the extreme compression of large language models (LLMs). This paper claims to have beaten QuIP# by narrowing the perplexity gap, a significant achievement in the field. The method involves new techniques related to codebooks and the idea of compressing a Mixture of Experts (MoE) by exploiting expert similarity. This potential breakthrough has the community calling for a detailed explanation of how the new method works, as it could revolutionize the way we handle and deploy LLMs.\n\n## Multilingual Models and the TaCo Method\n\nThe creation of multilingual LLMs is a challenge that has been met with innovative solutions, as seen in the introduction of the TaCo (Translation-Assisted Chain-of-Thought Processes) method. A Reddit post from January 22, 2024, discusses the TaCo Paper, which presents a cost-effective method for instruction-tuning LLMs in new languages using translation. The results show impressive performance boosts, especially in low-resource languages. The public release of the Multilingual Instruction-Tuning Dataset (MITS) and model adapters for languages like Nepali and Persian has opened up new possibilities for AI applications across different languages.\n\n## Proxy-Tuning: A New Approach to Model Tuning\n\nOn January 23, 2024, the AI community was introduced to Proxy-Tuning, a lightweight decoding-time algorithm that tunes large pretrained language models. This method allows for domain adaptation on code and task-specific finetuning on question-answering and math problems. Interestingly, proxy-tuned models have been found to be more truthful than directly tuned models. The concept of an activation \"steering vector\" is central to this approach, allowing for the specialization of models to perform specific tasks. This development, pioneered by the Allen Institute for AI, represents a significant step forward in the field of activation engineering.\n\n## The AI Hiring Debate\n\nThe use of AI in the hiring process is a contentious topic, as evidenced by a Reddit discussion on January 22, 2024. The original poster sought advice on using LLMs to match job candidates with employer requirements, sparking a debate about the role of AI in recruitment. Concerns were raised about the potential for AI to filter out good candidates and the impact on the role of human recruiters. This conversation reflects the broader societal questions about the ethical use of AI and the need for regulation in sensitive areas like employment.\n\nIn conclusion, the AI landscape is rapidly evolving, with new models, methods, and ethical considerations emerging at a breakneck pace. The discussions on Reddit provide a window into the collective mind of the AI community, where the excitement for innovation is matched by a commitment to understanding and addressing the implications of these powerful technologies. As we continue to explore the frontier of AI, it's clear that the journey is just as thrilling as the destination.",
  "mimeType": "text/markdown",
  "fileType": "DOCUMENT",
  "id": "abfa2429-5a19-408b-8ca1-445c01704068",
  "name": "Content",
  "state": "EXTRACTED",
  "creationDate": "2024-01-23T07:33:33Z",
  "owner": {
    "id": "5a9d0a48-e8f3-47e6-b006-3377472bac47"
  }
}

Audio Publishing

In this example, we have ingested five pieces of content, including web pages from AI companies, Techcrunch, blog posts and an ArXiv PDF.

Say you want to create a weekly AI-generated podcast based on your own, or publically available content.

You can summarize and publish your ingested content into an MP3 audio format using our integration with ElevenLabs text-to-speech models.

First, you will want to set the type field to ELEVEN_LABS_AUDIO.

Next you will want to configure your publishing prompt. You can optionally configure a summary prompt, to be executed on each piece of content, but Graphlit provides a useful default summary prompt for most use cases.

Here is the publishing prompt we used for this example. Note that it uses a Chain-of-Thought approach to prompting, and it has the LLM take a step-by-step process.

Follow these steps.

Step 1: Think about a structure for 10 minute long, engaging AI-generated podcast, with an welcome and introduction, an in-depth discussion of 4-6 interesting topics across all provided content, and a wrap-up.  
Step 2: For each topic, write 2-3 detailed paragraphs discussing it in-depth. Touch on key points for each topic which would be interesting to listeners. Mention the content metadata, entities and details from the provided summaries, as appropriate in the discussion. Remove any topic or section headings. Remove any references to podcast background music.  Remove any timestamps.
Step 3: Combine all topics into a lengthy, single-person script which can be used to record a podcast. Use friendly and compelling conversation to write the scripts.  You can be witty, but don't be cheesy.
Step 4: Remove any unnecessary formatting or final notes about being AI generated. 

Refer to this as the Graphlit AI podcast, but don't mention anything about the host.

ElevenLabs Configuration

You can configure the ElevenLabs model and voice, with the publishing connector. Here we are specifying the ENGLISH_V1 model. You can see more information about the available ElevenLabs models here.

For the voice, you will need the voice identifier from ElevenLabs, and you can create your own voice if you have an ElevenLabs account, or use one of their pre-built voices. More information about ElevenLabs voices can be found here.

Some example voices are:

We suggest creating a free ElevenLabs account, so you can browse their available voices, and copy the appropriate voice identifier for use in Graphlit.

Please reach out to us if you need more help finding an ElevenLabs voice that works for you.

Mutation:

mutation PublishContents($summaryPrompt: String, $publishPrompt: String!, $connector: ContentPublishingConnectorInput!, $filter: ContentFilter, $name: String, $summarySpecification: EntityReferenceInput, $publishSpecification: EntityReferenceInput, $workflow: EntityReferenceInput) {
  publishContents(summaryPrompt: $summaryPrompt, publishPrompt: $publishPrompt, connector: $connector, filter: $filter, name: $name, summarySpecification: $summarySpecification, publishSpecification: $publishSpecification, workflow: $workflow) {
    id
    name
    creationDate
    owner {
      id
    }
    state
    uri
    type
    fileType
    mimeType
    fileName
    fileSize
  }
}

Variables:

{
  "publishPrompt": "Follow these steps.\\n\\nStep 1: Think about a structure for 10 minute long, engaging AI-generated podcast, with an welcome and introduction, an in-depth discussion of 4-6 interesting topics across all provided content, and a wrap-up.  \\nStep 2: For each topic, write 2-3 detailed paragraphs discussing it in-depth. Touch on key points for each topic which would be interesting to listeners. Mention the content metadata, entities and details from the provided summaries, as appropriate in the discussion. Remove any topic or section headings. Remove any references to podcast background music.  Remove any timestamps.\\nStep 3: Combine all topics into a lengthy, single-person script which can be used to record a podcast. Use friendly and compelling conversation to write the scripts.  You can be witty, but don't be cheesy.\\nStep 4: Remove any unnecessary formatting or final notes about being AI generated. \\n\\nRefer to this as the Graphlit AI podcast, but don't mention anything about the host.",
  "connector": {
    "type": "ELEVEN_LABS_AUDIO",
    "format": "MP3",
    "elevenLabs": {
      "model": "ENGLISH_V1",
      "voice": "NO8iseyk20Aw8Lx2NvBu"
    }
  },
  "publishSpecification": {
    "id": "f8b35981-9567-4dfc-9cdd-89ee4f7a5d40"
  }
}

Response:

{
  "type": "FILE",
  "mimeType": "audio/mp3",
  "fileType": "AUDIO",
  "fileSize": 4004049,
  "uri": "https://redacted.blob.core.windows.net/files/b15fa0f6-55c3-46e4-8168-51c2dc56b040/Content.mp3",
  "id": "b15fa0f6-55c3-46e4-8168-51c2dc56b040",
  "name": "Content.mp3",
  "state": "INGESTED",
  "creationDate": "2024-01-23T06:16:17Z",
  "owner": {
    "id": "5a9d0a48-e8f3-47e6-b006-3377472bac47"
  }
}

Last updated