.mwai-chat {
–mwai-spacing: 15px;
–mwai-fontSize: 15px;
–mwai-lineHeight: 1.5;
–mwai-borderRadius: 10px;
–mwai-fontColor: #FFFFFF;
–mwai-backgroundPrimaryColor: #454654;
–mwai-backgroundSecondaryColor: #343541;
–mwai-userAvatarBackgroundColor: #135ea4;
–mwai-headerButtonsColor: #FFFFFF;
–mwai-width: 560px;
–mwai-maxHeight: 80vh;
}
.mwai-chat .mwai-open-button {
position: absolute;
right: 0;
bottom: 0;
transition: all 0.2s ease-out;
z-index: 9999;
display: flex;
flex-direction: column;
align-items: end;
}
.mwai-chat .mwai-open-button .mwai-icon-text {
background: var(–mwai-backgroundPrimaryColor);
color: var(–mwai-headerButtonsColor);
max-width: 200px;
: 13px;
margin-bottom: 15px;
padding: 5px 10px;
border-radius: 8px;
}
.mwai-chat .mwai-open-button:hover {
cursor: pointer;
filter: saturate(2.5) hue-rotate(5deg);
}
.mwai-chat .mwai-content {
background: var(–mwai-backgroundSecondaryColor);
color: var(–mwai-fontColor);
: var(–mwai-fontSize);
border-radius: var(–mwai-borderRadius);
overflow: hidden;
display: flex;
flex-direction: column;
}
.mwai-chat .mwai-conversation {
overflow: auto;
}
.mwai-chat * {
box-sizing: border-box;
}
.mwai-chat .mwai-reply {
display: flex;
padding: var(–mwai-spacing);
position: relative;
: var(–mwai-lineHeight);
}
.mwai-chat .mwai-reply .mwai-copy-button {
opacity: 0;
transition: all 0.3s ease-out;
width: 22px;
height: 22px;
position: absolute;
right: var(–mwai-spacing);
}
.mwai-chat .mwai-reply .mwai-copy-button .mwai-copy-button-one {
position: absolute;
width: 16px;
height: 16px;
margin-top: 0px;
margin-left: 0px;
background: white;
opacity: 0.4;
transition: all 0.2s ease-in;
cursor: pointer;
border-radius: 2px;
}
.mwai-chat .mwai-reply .mwai-copy-button .mwai-copy-button-two {
position: absolute;
width: 16px;
height: 16px;
margin-top: 6px;
margin-left: 6px;
background: white;
opacity: 0.6;
transition: all 0.2s ease-in;
cursor: pointer;
border-radius: 2px;
}
.mwai-chat .mwai-reply .mwai-copy-button:hover .mwai-copy-button-one {
opacity: 0.6;
margin-top: 0px;
margin-left: 6px;
}
.mwai-chat .mwai-reply .mwai-copy-button:hover .mwai-copy-button-two {
opacity: 1;
margin-top: 6px;
margin-left: 0px;
}
.mwai-chat .mwai-reply .mwai-copy-button.mwai-animate .mwai-copy-button-one {
opacity: 0;
}
.mwai-chat .mwai-reply .mwai-copy-button.mwai-animate .mwai-copy-button-two {
width: 18px;
height: 18px;
margin-top: 2px;
margin-left: 2px;
opacity: 1;
}
.mwai-chat .mwai-reply:hover .mwai-copy-button {
display: block;
opacity: 1;
}
.mwai-chat .mwai-ai, .mwai-chat .mwai-system {
background: var(–mwai-backgroundPrimaryColor);
}
.mwai-chat .mwai-name {
color: var(–mwai-fontColor);
margin-right: 5px;
}
.mwai-chat .mwai-name .mwai-name-text {
opacity: 0.50;
white-space: nowrap;
}
.mwai-chat .mwai-name .mwai-avatar {
margin-right: 10px;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 5px;
overflow: hidden;
}
.mwai-chat .mwai-name .mwai-avatar img {
max-width: 100%;
max-height: 100%;
}
.mwai-chat .mwai-name .mwai-avatar.mwai-svg img {
width: 28px;
height: 28px;
filter: brightness(0) invert(1);
}
.mwai-chat .mwai-user .mwai-name .mwai-avatar {
background: var(–mwai-userAvatarBackgroundColor);
}
.mwai-chat .mwai-text {
flex: auto;
}
.mwai-chat .mwai-text *:first-child {
margin-top: 0;
}
.mwai-chat .mwai-text *:last-child {
margin-bottom: 0;
}
.mwai-chat .mwai-text a {
2196f3;
}
.mwai-chat .mwai-text h1 {
: 200%;
}
.mwai-chat .mwai-text h2 {
: 160%;
}
.mwai-chat .mwai-text h3 {
: 140%;
}
.mwai-chat .mwai-text h4 {
: 120%;
}
.mwai-chat .mwai-text p {
: var(–mwai-fontSize);
: var(–mwai-lineHeight);
}
.mwai-chat .mwai-text p code {
background: var(–mwai-backgroundSecondaryColor);
padding: 2px 6px;
border-radius: 8px;
: 90%;
: system-ui;
}
.mwai-chat .mwai-text pre {
color: var(–mwai-fontColor);
border-radius: var(–mwai-borderRadius);
padding: calc(var(–mwai-spacing) * 2 / 3) var(–mwai-spacing);
break-after: auto;
: 95%;
max-width: 100%;
width: 100%;
: system-ui;
background: #343541;
}
.mwai-chat .mwai-text pre code {
padding: 0 !important;
: system-ui;
background: #343541;
}
.mwai-chat .mwai-text ol {
padding: 0;
margin: 0 0 0 20px;
}
.mwai-chat .mwai-text table {
width: 100%;
border: 2px solid var(–mwai-backgroundSecondaryColor);
border-collapse: collapse;
}
.mwai-chat .mwai-text thead {
background: var(–mwai-backgroundSecondaryColor);
}
.mwai-chat .mwai-text tr, .mwai-chat .mwai-text td {
padding: 2px 5px;
}
.mwai-chat .mwai-text td {
border: 2px solid var(–mwai-backgroundSecondaryColor);
}
.mwai-chat .mwai-text .mwai-typewriter {
display: inline-block;
}
.mwai-chat .mwai-text .mwai-typewriter > :first-child {
margin-top: 0;
}
.mwai-chat .mwai-text > *:first-child {
margin-top: 0;
}
.mwai-chat .mwai-text > *:last-child {
margin-bottom: 0;
}
.mwai-chat .mwai-system .mwai-name {
display: none;
}
.mwai-chat .mwai-input {
display: flex;
padding: var(–mwai-spacing);
border-top: 1px solid var(–mwai-backgroundPrimaryColor);
}
.mwai-chat .mwai-input textarea {
background: var(–mwai-backgroundPrimaryColor);
color: var(–mwai-fontColor);
flex: auto;
padding: calc(var(–mwai-spacing) / 2) var(–mwai-spacing);
border: none;
border-radius: 5px;
: var(–mwai-fontSize);
resize: none;
: inherit;
: calc(var(–mwai-spacing) * 2);
margin: 0;
overflow: hidden;
}
.mwai-chat .mwai-input textarea:focus {
outline: none;
}
.mwai-chat .mwai-input textarea::placeholder {
color: var(–mwai-fontColor);
opacity: 0.5;
}
.mwai-chat .mwai-compliance {
opacity: 0.50;
margin-top: calc( -1 * var(–mwai-spacing));
padding: calc(var(–mwai-spacing) / 1.5) var(–mwai-spacing);
: smaller;
color: var(–mwai-fontColor);
text-align: left;
}
.mwai-chat button {
background: none;
color: var(–mwai-fontColor);
background-color: var(–mwai-backgroundSecondaryColor);
border: 1px solid var(–mwai-backgroundPrimaryColor);
margin-left: var(–mwai-spacing);
width: 90px;
border-radius: 5px;
cursor: pointer;
transition: all 0.2s ease-out;
display: flex;
align-items: center;
justify-content: center;
: 90%;
}
.mwai-chat button .mwai-timer {
margin-left: 5px;
margin-right: 5px;
: 11px;
}
.mwai-chat button:hover {
background: var(–mwai-backgroundPrimaryColor);
}
.mwai-chat button {
position: relative;
}
.mwai-chat button[disabled] span {
display: none;
}
.mwai-chat button[disabled]::before {
content: ”;
width: 18px;
height: 18px;
margin: auto;
border: 3px solid transparent;
border-top-color: var(–mwai-fontColor);
border-radius: 50%;
animation: mwai-button-spinner 1s ease infinite;
}
.mwai-chat.mwai-window {
position: fixed;
right: 30px;
bottom: 30px;
width: var(–mwai-width);
z-index: 9999;
}
.mwai-chat.mwai-window .mwai-header {
display: none;
justify-content: flex-end;
align-items: center;
}
.mwai-chat.mwai-window .mwai-header .mwai-buttons {
display: flex;
align-items: center;
margin-bottom: 5px;
}
.mwai-chat.mwai-window .mwai-header .mwai-buttons .mwai-resize-button {
justify-content: center;
height: 32px;
width: 33px;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
background-color: var(–mwai-backgroundSecondaryColor);
border-radius: var(–mwai-borderRadius);
}
.mwai-chat.mwai-window .mwai-header .mwai-buttons .mwai-resize-button:before {
transition: all 0.2s ease-out;
content: ‘ ‘;
cursor: pointer;
position: absolute;
height: 13px;
width: 13px;
opacity: 0.75;
border: 2px solid var(–mwai-headerButtonsColor);
}
.mwai-chat.mwai-window .mwai-header .mwai-buttons .mwai-resize-button:hover:before {
width: 16px;
height: 16px;
}
.mwai-chat.mwai-window .mwai-header .mwai-buttons .mwai-close-button {
margin-left: 5px;
justify-content: center;
height: 32px;
width: 33px;
cursor: pointer;
background-color: var(–mwai-backgroundSecondaryColor);
border-radius: var(–mwai-borderRadius);
}
.mwai-chat.mwai-window .mwai-header .mwai-buttons .mwai-close-button:before {
transition: all 0.2s ease-out;
transform: translate(16px, 5px) rotate(45deg);
}
.mwai-chat.mwai-window .mwai-header .mwai-buttons .mwai-close-button:after {
transition: all 0.2s ease-out;
transform: translate(16px, 5px) rotate(-45deg);
}
.mwai-chat.mwai-window .mwai-header .mwai-buttons .mwai-close-button:before, .mwai-chat.mwai-window .mwai-header .mwai-buttons .mwai-close-button:after {
content: ‘ ‘;
cursor: pointer;
position: absolute;
height: 22px;
width: 2px;
background-color: var(–mwai-headerButtonsColor);
opacity: 0.75;
}
.mwai-chat.mwai-window .mwai-header .mwai-buttons .mwai-close-button:hover:before {
opacity: 1;
transform: translate(16px, 5px) rotate(135deg);
}
.mwai-chat.mwai-window .mwai-header .mwai-buttons .mwai-close-button:hover:after {
opacity: 1;
transform: translate(16px, 5px) rotate(45deg);
}
.mwai-chat.mwai-window .mwai-content {
display: none;
opacity: 0;
max-height: var(–mwai-maxHeight);
}
.mwai-chat.mwai-window.mwai-bottom-left {
bottom: 30px;
right: inherit;
left: 30px;
}
.mwai-chat.mwai-window.mwai-bottom-left .mwai-open-button {
right: inherit;
left: 0;
}
.mwai-chat.mwai-window.mwai-top-right {
top: 30px;
bottom: inherit;
right: 30px;
}
.mwai-chat.mwai-window.mwai-top-right .mwai-open-button {
top: 0;
bottom: inherit;
}
.mwai-chat.mwai-window.mwai-top-left {
top: 30px;
bottom: inherit;
right: inherit;
left: 30px;
}
.mwai-chat.mwai-window.mwai-top-left .mwai-open-button {
top: 0;
bottom: inherit;
right: inherit;
left: 0;
}
.mwai-chat .mwai-gallery {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 5px;
}
.mwai-chat .mwai-gallery img {
width: 100%;
}
.mwai-chat.mwai-window.mwai-fullscreen .mwai-header .mwai-buttons {
margin-bottom: 0px;
}
.mwai-chat.mwai-window.mwai-fullscreen .mwai-header .mwai-buttons .mwai-resize-button:before {
width: 16px;
height: 16px;
}
.mwai-chat.mwai-window.mwai-fullscreen .mwai-header .mwai-buttons .mwai-resize-button:hover:before {
width: 13px;
height: 13px;
}
.mwai-chat.mwai-window.mwai-fullscreen .mwai-header .mwai-buttons .mwai-close-button {
margin-left: -5px;
}
.mwai-chat.mwai-fullscreen:not(.mwai-window), .mwai-chat.mwai-fullscreen.mwai-window.mwai-open {
position: fixed;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
top: 0 !important;
width: inherit;
height: inherit;
max-height: inherit;
max-width: inherit;
display: flex;
flex-direction: column;
margin: 0;
z-index: 999999;
background-color: var(–mwai-backgroundSecondaryColor);
}
.mwai-chat.mwai-fullscreen:not(.mwai-window) .mwai-content, .mwai-chat.mwai-fullscreen.mwai-window.mwai-open .mwai-content {
height: 100%;
max-height: inherit;
border-radius: inherit;
}
.mwai-chat.mwai-fullscreen:not(.mwai-window) .mwai-content .mwai-conversation, .mwai-chat.mwai-fullscreen.mwai-window.mwai-open .mwai-content .mwai-conversation {
flex: auto;
}
.mwai-chat.mwai-window.mwai-open .mwai-header {
display: flex;
}
.mwai-chat.mwai-window.mwai-open .mwai-content {
display: flex;
transition: opacity 200ms ease-in-out 0s;
opacity: 1;
}
.mwai-chat.mwai-window.mwai-open .mwai-open-button {
display: none;
}
@media (max-width: 760px) {
.mwai-chat.mwai-window {
left: 10px;
right: 10px;
bottom: 10px;
width: calc(100% – 20px);
z-index: 9999999999;
}
.mwai-chat .mwai-reply {
flex-direction: column;
}
.mwai-chat .mwai-input {
flex-direction: column;
}
.mwai-chat .mwai-input button {
margin: 15px 0 0 0;
height: 40px;
width: inherit;
}
.mwai-chat .mwai-name {
margin-right: 0;
max-width: inherit;
}
}
@keyframes mwai-button-spinner {
from {
transform: rotate(0turn);
}
to {
transform: rotate(1turn);
}
}
.admin-bar .mwai-chat.mwai-fullscreen:not(.mwai-window),
.admin-bar .mwai-chat.mwai-fullscreen.mwai-window.mwai-open {
top: 32px;
}
(function () {
let isMobile = window.matchMedia( “only screen and (max-width: 760px)” ).matches;
let isWindow = true;
let isDebugMode = true;
let isFullscreen = true;
let restNonce = ‘c8a73f8e81’;
let apiURL = ‘https://complexdiscovery.com/wp-json/ai-chatbot/v1/chat’;
let isCasuallyFineTuned = false;
let rawUserName = ‘User: ‘;
let rawAiName = ‘AI: ‘;
let userName = ‘
‘;
let aiName = ‘
‘;
let sysName = ‘System:’;
let env = ‘chatbot’;
let apiKey = ”;
let service = ‘openai’;
let session = ‘N/A’;
let mode = ‘chat’;
let model = ‘gpt-3.5-turbo’;
let context = isCasuallyFineTuned ? null : ‘Converse as if you were an AI assistant. Be friendly, creative. Let’s have a discussion about this article:\n\nEditor’s Note: From time to time, ComplexDiscovery highlights publicly available or privately purchasable announcements, content updates, and research from cyber, data, and legal discovery providers, research organizations, and ComplexDiscovery community members. While ComplexDiscovery regularly highlights this information, it does not assume any responsibility for content assertions. Contact us today to submit recommendations for consideration and inclusion in ComplexDiscovery’s data and legal discovery-centric service, product, or research announcements. Background Note: The rapid advancements in artificial intelligence (AI) technology have the potential to revolutionize various industries, including finance, law, media, medicine, and technology, as well as the cross-industry segments of cybersecurity, information governance, and eDiscovery. However, these advancements also raise concerns about potential biases, discrimination, and misleading claims surrounding AI-driven products and services. The Federal Trade Commission (FTC) has provided guidance and posed critical questions to help businesses harness AI’s benefits without inadvertently introducing unfair outcomes or making false claims. This ComplexDiscovery summary presents two key FTC articles regarding AI and explores how their guidance and questions can be applied to the marketing and communication strategies of eDiscovery software and service providers. ComplexDiscovery BackgroundernHolding Providers Accountable? Considering AI in eDiscovery Software and Service Provider MessagingnAI in eDiscoverynFTC Article #1: Aiming for Truth, Fairness, and Equity in Your Company’s Use of AI (1)nSummary and ConsiderationsnThis article from the FTC discusses the potential issues of bias and discrimination in artificial intelligence (AI) and how the FTC provides guidance on using AI ethically. The FTC has experience enforcing three important laws relating to AI: Section 5 of the FTC Act, the Fair Credit Reporting Act, and the Equal Credit Opportunity Act. Based on these laws, the FTC offers seven statements of exhortation to help businesses harness AI benefits without introducing unfair outcomes:n Start with the right foundation: Ensure a solid data foundation to avoid unfair or inequitable results for legally protected groups. Watch out for discriminatory outcomes: Test the algorithm to ensure it doesn’t discriminate based on race, gender, or other protected classes. Embrace transparency and independence: Promote transparency and allow independent researchers to examine data, algorithms, and results. Don’t exaggerate what your algorithm can do: Ensure that claims about an algorithm’s capabilities are truthful and supported by evidence. Tell the truth about how you use data: Avoid misleading users about data collection and usage, as seen in the FTC complaints against Facebook and Everalbum. Do more good than harm: Ensure that the algorithm’s benefits outweigh any potential harm to consumers or competition. Hold yourself accountable: Implement transparency and accountability measures to avoid FTC intervention for violations of the relevant laws. This guidance from the FTC can be beneficial for eDiscovery service and software providers in several ways:n Enhancing data quality and reliability: By starting with the right foundation, eDiscovery providers can ensure that their AI algorithms are built on high-quality data, leading to more accurate and reliable results in the discovery process. Reducing the risk of biased outcomes: By watching out for discriminatory outcomes, eDiscovery providers can minimize the risk of biased search results, which could lead to incomplete or skewed evidence in legal proceedings. Building trust through transparency: Embracing transparency and independence allows eDiscovery providers to demonstrate their commitment to ethical AI practices. This can help build trust with clients, the legal community, and regulators, potentially leading to more business opportunities. Managing client expectations: By being truthful about the capabilities and limitations of their AI algorithms, eDiscovery providers can manage clients’ expectations, reducing the risk of dissatisfaction and potential disputes. Ensuring compliance with data protection laws: By being transparent about how data is used, eDiscovery providers can ensure that they comply with data protection laws and regulations, avoiding potential fines or legal actions. Balancing benefits and potential harm: By doing more good than harm, eDiscovery providers can create AI solutions that optimize the discovery process while minimizing the risk of adverse consequences, such as privacy violations or the exclusion of relevant evidence. Promoting accountability and avoiding regulatory action: By holding themselves accountable and adhering to the FTC’s guidance, eDiscovery providers can reduce the risk of regulatory action, ensuring the continued operation of their business and maintaining a positive reputation in the industry. Following the FTC’s guidance can help eDiscovery service and software providers create AI-driven solutions that are more ethical, reliable, and compliant with legal and regulatory requirements. This, in turn, can lead to better outcomes for clients and a more trusted and successful eDiscovery industry. Read the complete FTC article. FTC Article #2: Keep Your AI Claims in Check (2)nSummary and ConsiderationsnThis article from the FTC discusses the issue of AI hype and the potential for marketers to overuse and abuse the term “artificial intelligence. Federal Trade Commission. ftc.\n\nDiscussion:\n\n’;
let embeddingsIndex = ”;
let promptEnding = ”;
let stop = ”;
let startSentence = ‘Hi! I’m the AI article assistant of ComplexDiscovery. With the right prompts I can summarize or answer questions about this specific page or article, craft an email on it, or even write a LinkedIn or Twitter post for it. Just ask!’;
let maxSentences = 30;
let memorizeChat = false;
let maxTokens = 2048;
let maxResults = 1;
let temperature = 0.8;
let typewriter = false;
let copyButton = true;
let clientId = randomStr();
let memorizedChat = { clientId, messages: [] };
if (isDebugMode) {
window.mwai_6433087ba9948 = {
memorizedChat: memorizedChat,
parameters: { mode: mode, model, temperature, maxTokens, context: context, startSentence,
isMobile, isWindow, isFullscreen, isCasuallyFineTuned, memorizeChat, maxSentences,
rawUserName, rawAiName, embeddingsIndex, typewriter, maxResults, userName, aiName, env, apiKey, service, session
}
};
}
function randomStr() {
return Math.random().toString(36).substring(2);
}
// Set button text
function setButtonText() {
let input = document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-input textarea’);
let button = document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-input button’);
let buttonSpan = button.querySelector(‘span’);
if (memorizedChat.messages.length 0.5) {
timerElement = document.createElement(‘div’);
timerElement.classList.add(‘mwai-timer’);
element.appendChild(timerElement);
}
}
if (timerElement) {
let minutes = Math.floor(timer / 60);
let seconds = timer – (minutes * 60);
seconds = seconds < 10 ? ‘0’ + seconds : seconds;
let display = minutes + ‘:’ + seconds;
timerElement.innerHTML = display;
}
}
intervalId = setInterval(updateTimer, 500);
return function stopTimer() {
clearInterval(intervalId);
if (timerElement) {
timerElement.remove();
}
};
}
// Push the reply in the conversation
function addReply(text, role = ‘user’, replay = false) {
var conversation = document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-conversation’);
if (memorizeChat) {
localStorage.setItem(‘mwai-chat-6433087ba9948’, JSON.stringify(memorizedChat));
}
// If text is array, then it’s image URLs. Let’s create a simple gallery in HTML in $text.
if (Array.isArray(text)) {
var newText = ‘
‘;
}
var mwaiClasses = [‘mwai-reply’];
if (role === ‘assistant’) {
mwaiClasses.push(‘mwai-ai’);
}
else if (role === ‘system’) {
mwaiClasses.push(‘mwai-system’);
}
else {
mwaiClasses.push(‘mwai-user’);
}
var div = document.createElement(‘div’);
div.classList.add(…mwaiClasses);
var nameSpan = document.createElement(‘span’);
nameSpan.classList.add(‘mwai-name’);
if (role === ‘assistant’) {
nameSpan.innerHTML = aiName;
}
else if (role === ‘system’) {
nameSpan.innerHTML = sysName;
}
else {
nameSpan.innerHTML = userName;
}
var textSpan = document.createElement(‘span’);
textSpan.classList.add(‘mwai-text’);
textSpan.innerHTML = text;
div.appendChild(nameSpan);
div.appendChild(textSpan);
// Copy Button
if (copyButton && role === ‘assistant’) {
var button = document.createElement(‘div’);
button.classList.add(‘mwai-copy-button’);
var firstElement = document.createElement(‘div’);
firstElement.classList.add(‘mwai-copy-button-one’);
var secondElement = document.createElement(‘div’);
secondElement.classList.add(‘mwai-copy-button-two’);
button.appendChild(firstElement);
button.appendChild(secondElement);
div.appendChild(button);
button.addEventListener(‘click’, function () {
try {
var content = textSpan.textContent;
navigator.clipboard.writeText(content);
button.classList.add(‘mwai-animate’);
setTimeout(function () {
button.classList.remove(‘mwai-animate’);
}, 1000);
}
catch (err) {
console.warn(‘Not allowed to copy to clipboard. Make sure your website uses HTTPS.’);
}
});
}
conversation.appendChild(div);
if (typewriter) {
if (role === ‘assistant’ && text !== startSentence && !replay) {
let typewriter = new Typewriter(textSpan, {
deleteSpeed: 50, delay: 25, loop: false, cursor: ”, autoStart: true,
wrapperClassName: ‘mwai-typewriter’,
});
typewriter.typeString(text).start().callFunction((state) => {
state.elements.cursor.setAttribute(‘hidden’, ‘hidden’);
typewriter.stop();
});
}
}
conversation.scrollTop = conversation.scrollHeight;
setButtonText();
// Syntax coloring
if (typeof hljs !== ‘undefined’) {
document.querySelectorAll(‘pre code’).forEach((el) => {
hljs.highlightElement(el);
});
}
}
function buildPrompt(last = 15) {
let prompt = context ? (context + ‘nn’) : ”;
memorizedChat.messages = memorizedChat.messages.slice(-last);
// Casually fine tuned, let’s use the last question
if (isCasuallyFineTuned) {
let lastLine = memorizedChat.messages[memorizedChat.messages.length – 1];
prompt = lastLine.content + promptEnding;
return prompt;
}
// Otherwise let’s compile the latest conversation
let conversation = memorizedChat.messages.map(x => x.who + x.content);
prompt += conversation.join(‘n’);
prompt += ‘n’ + rawAiName;
return prompt;
}
// Function to request the completion
function onSendClick() {
let input = document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-input textarea’);
let inputText = input.value.trim();
// Reset the conversation if empty
if (inputText === ”) {
clientId = randomStr();
document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-conversation’).innerHTML = ”;
localStorage.removeItem(‘mwai-chat-6433087ba9948’)
memorizedChat = { clientId: clientId, messages: [] };
memorizedChat.messages.push({
id: randomStr(),
role: ‘assistant’,
content: startSentence,
who: rawAiName,
html: startSentence
});
addReply(startSentence, ‘assistant’);
return;
}
// Disable the button
var button = document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-input button’);
button.disabled = true;
// Add the user reply
memorizedChat.messages.push({
id: randomStr(),
role: ‘user’,
content: inputText,
who: rawUserName,
html: inputText
});
addReply(inputText, ‘user’);
input.value = ”;
input.setAttribute(‘rows’, 1);
input.disabled = true;
let prompt = buildPrompt(maxSentences);
const data = mode === ‘images’ ? {
env, session: session,
prompt: inputText,
newMessage: inputText,
model: model,
maxResults,
apiKey: apiKey,
service: service,
clientId: clientId,
} : {
env, session: session,
prompt: prompt,
context: context,
messages: memorizedChat.messages,
newMessage: inputText,
userName: userName,
aiName: aiName,
model: model,
temperature: temperature,
maxTokens: maxTokens,
maxResults: 1,
apiKey: apiKey,
service: service,
embeddingsIndex: embeddingsIndex,
stop: stop,
clientId: clientId,
};
// Start the timer
const stopTimer = injectTimer(button);
// Send the request
if (isDebugMode) {
console.log(‘[BOT] Sent: ‘, data);
}
fetch(apiURL, { method: ‘POST’, headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: restNonce,
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
if (isDebugMode) {
console.log(‘[BOT] Recv: ‘, data);
}
if (!data.success) {
addReply(data.message, ‘system’);
}
else {
let html = data.images ? data.images : data.html;
memorizedChat.messages.push({
id: randomStr(),
role: ‘assistant’,
content: data.answer,
who: rawAiName,
html: html
});
addReply(html, ‘assistant’);
}
button.disabled = false;
input.disabled = false;
stopTimer();
// Only focus only on desktop (to avoid the mobile keyboard to kick-in)
if (!isMobile) {
input.focus();
}
})
.catch(error => {
console.error(error);
button.disabled = false;
input.disabled = false;
stopTimer();
});
}
// Keep the textarea height in sync with the content
function resizeTextArea(ev) {
ev.target.style.height = ‘auto’;
ev.target.style.height = ev.target.scrollHeight + ‘px’;
}
// Keep the textarea height in sync with the content
function delayedResizeTextArea(ev) {
window.setTimeout(resizeTextArea, 0, event);
}
// Init the chatbot
function initMeowChatbot() {
var input = document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-input textarea’);
var button = document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-input button’);
input.addEventListener(‘keypress’, (event) => {
let text = event.target.value;
if (event.keyCode === 13 && !text.length && !event.shiftKey) {
event.preventDefault();
return;
}
if (event.keyCode === 13 && text.length && !event.shiftKey) {
onSendClick();
}
});
input.addEventListener(‘keydown’, (event) => {
var rows = input.getAttribute(‘rows’);
if (event.keyCode === 13 && event.shiftKey) {
var lines = input.value.split(‘n’).length + 1;
//mwaiSetTextAreaHeight(input, lines);
}
});
input.addEventListener(‘keyup’, (event) => {
var rows = input.getAttribute(‘rows’);
var lines = input.value.split(‘n’).length ;
//mwaiSetTextAreaHeight(input, lines);
setButtonText();
});
input.addEventListener(‘change’, resizeTextArea, false);
input.addEventListener(‘cut’, delayedResizeTextArea, false);
input.addEventListener(‘paste’, delayedResizeTextArea, false);
input.addEventListener(‘drop’, delayedResizeTextArea, false);
input.addEventListener(‘keydown’, delayedResizeTextArea, false);
button.addEventListener(‘click’, (event) => {
onSendClick();
});
// If window, add event listener to mwai-open-button and mwai-close-button
if ( isWindow ) {
var openButton = document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-open-button’);
openButton.addEventListener(‘click’, (event) => {
var chat = document.querySelector(‘#mwai-chat-6433087ba9948’);
chat.classList.add(‘mwai-open’);
// Only focus only on desktop (to avoid the mobile keyboard to kick-in)
if (!isMobile) {
input.focus();
}
});
var closeButton = document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-close-button’);
closeButton.addEventListener(‘click’, (event) => {
var chat = document.querySelector(‘#mwai-chat-6433087ba9948’);
chat.classList.remove(‘mwai-open’);
});
if (isFullscreen) {
var resizeButton = document.querySelector(‘#mwai-chat-6433087ba9948 .mwai-resize-button’);
resizeButton.addEventListener(‘click’, (event) => {
var chat = document.querySelector(‘#mwai-chat-6433087ba9948’);
chat.classList.toggle(‘mwai-fullscreen’);
});
}
}
// Get back the previous chat if any for the same ID
var chatHistory = [];
if (memorizeChat) {
chatHistory = localStorage.getItem(‘mwai-chat-6433087ba9948’);
if (chatHistory) {
memorizedChat = JSON.parse(chatHistory);
if (memorizedChat && memorizedChat.clientId && memorizedChat.messages) {
clientId = memorizedChat.clientId;
memorizedChat.messages = memorizedChat.messages.filter(x => x && x.html && x.role);
memorizedChat.messages.forEach(x => {
addReply(x.html, x.role, true);
});
}
else {
memorizedChat = null;
}
}
if (!memorizedChat) {
memorizedChat = {
clientId: clientId,
messages: []
};
}
}
if (memorizedChat.messages.length === 0) {
memorizedChat.messages.push({
id: randomStr(),
role: ‘assistant’,
content: startSentence,
who: rawAiName,
html: startSentence
});
addReply(startSentence, ‘assistant’);
}
}
// Let’s go totally meoooow on this!
initMeowChatbot();
})();
Editor’s Note: From time to time, ComplexDiscovery highlights publicly available or privately purchasable announcements, content updates, and research from cyber, data, and legal discovery providers, research organizations, and ComplexDiscovery community members. While ComplexDiscovery regularly highlights this information, it does not assume any responsibility for content assertions.
Contact us today to submit recommendations for consideration and inclusion in ComplexDiscovery’s data and legal discovery-centric service, product, or research announcements.
Background Note: The rapid advancements in artificial intelligence (AI) technology have the potential to revolutionize various industries, including finance, law, media, medicine, and technology, as well as the cross-industry segments of cybersecurity, information governance, and eDiscovery. However, these advancements also raise concerns about potential biases, discrimination, and misleading claims surrounding AI-driven products and services. The Federal Trade Commission (FTC) has provided guidance and posed critical questions to help businesses harness AI’s benefits without inadvertently introducing unfair outcomes or making false claims. This ComplexDiscovery summary presents two key FTC articles regarding AI and explores how their guidance and questions can be applied to the marketing and communication strategies of eDiscovery software and service providers.
ComplexDiscovery Backgrounder
Holding Providers Accountable? Considering AI in eDiscovery Software and Service Provider Messaging
AI in eDiscovery
FTC Article #1: Aiming for Truth, Fairness, and Equity in Your Company’s Use of AI (1)
Summary and Considerations
This article from the FTC discusses the potential issues of bias and discrimination in artificial intelligence (AI) and how the FTC provides guidance on using AI ethically. The FTC has experience enforcing three important laws relating to AI: Section 5 of the FTC Act, the Fair Credit Reporting Act, and the Equal Credit Opportunity Act. Based on these laws, the FTC offers seven statements of exhortation to help businesses harness AI benefits without introducing unfair outcomes:
- Start with the right foundation: Ensure a solid data foundation to avoid unfair or inequitable results for legally protected groups.
- Watch out for discriminatory outcomes: Test the algorithm to ensure it doesn’t discriminate based on race, gender, or other protected classes.
- Embrace transparency and independence: Promote transparency and allow independent researchers to examine data, algorithms, and results.
- Don’t exaggerate what your algorithm can do: Ensure that claims about an algorithm’s capabilities are truthful and supported by evidence.
- Tell the truth about how you use data: Avoid misleading users about data collection and usage, as seen in the FTC complaints against Facebook and Everalbum.
- Do more good than harm: Ensure that the algorithm’s benefits outweigh any potential harm to consumers or competition.
- Hold yourself accountable: Implement transparency and accountability measures to avoid FTC intervention for violations of the relevant laws.
This guidance from the FTC can be beneficial for eDiscovery service and software providers in several ways:
- Enhancing data quality and reliability: By starting with the right foundation, eDiscovery providers can ensure that their AI algorithms are built on high-quality data, leading to more accurate and reliable results in the discovery process.
- Reducing the risk of biased outcomes: By watching out for discriminatory outcomes, eDiscovery providers can minimize the risk of biased search results, which could lead to incomplete or skewed evidence in legal proceedings.
- Building trust through transparency: Embracing transparency and independence allows eDiscovery providers to demonstrate their commitment to ethical AI practices. This can help build trust with clients, the legal community, and regulators, potentially leading to more business opportunities.
- Managing client expectations: By being truthful about the capabilities and limitations of their AI algorithms, eDiscovery providers can manage clients’ expectations, reducing the risk of dissatisfaction and potential disputes.
- Ensuring compliance with data protection laws: By being transparent about how data is used, eDiscovery providers can ensure that they comply with data protection laws and regulations, avoiding potential fines or legal actions.
- Balancing benefits and potential harm: By doing more good than harm, eDiscovery providers can create AI solutions that optimize the discovery process while minimizing the risk of adverse consequences, such as privacy violations or the exclusion of relevant evidence.
- Promoting accountability and avoiding regulatory action: By holding themselves accountable and adhering to the FTC’s guidance, eDiscovery providers can reduce the risk of regulatory action, ensuring the continued operation of their business and maintaining a positive reputation in the industry.
Following the FTC’s guidance can help eDiscovery service and software providers create AI-driven solutions that are more ethical, reliable, and compliant with legal and regulatory requirements. This, in turn, can lead to better outcomes for clients and a more trusted and successful eDiscovery industry.
Read the complete FTC article.
FTC Article #2: Keep Your AI Claims in Check (2)
Summary and Considerations
This article from the FTC discusses the issue of AI hype and the potential for marketers to overuse and abuse the term “artificial intelligence.” The FTC warns businesses against making false or unsubstantiated claims about their AI products, as these can lead to enforcement actions. The FTC may question the following aspects of AI advertising:
- Exaggeration of AI capabilities: Marketers should not claim their AI product can do something beyond the current capability of any AI or automated technology, and they should have scientific support for their performance claims.
- Promising superiority over non-AI products: Advertisers must have adequate proof to back up claims that their AI product performs better than a non-AI product.
- Awareness of risks: Businesses need to be aware of the reasonably foreseeable risks and impacts of their AI products and cannot blame third-party developers or claim ignorance if something goes wrong.
- Actual use of AI: Marketers should not make baseless claims about their product being AI-enabled, and should note that using AI in the development process is not the same as having AI in the product itself.
This FTC guidance on AI claims is particularly beneficial for eDiscovery service and software providers for several reasons:
- Exaggeration of AI capabilities: By ensuring that AI claims are accurate and supported by scientific evidence, eDiscovery providers can build trust with their clients and avoid potential legal issues arising from exaggerated performance claims. This can lead to better client satisfaction and protect the provider’s reputation in the market.
- Promising superiority over non-AI products: By backing up claims of AI superiority with adequate proof, eDiscovery providers can confidently demonstrate the value their AI-driven solutions offer. This can help them stand out in the competitive market and attract clients who are seeking advanced, reliable, and efficient eDiscovery solutions.
- Awareness of risks: Understanding the potential risks and impacts of their AI products helps eDiscovery providers to proactively address these issues, ensuring their solutions are reliable and compliant with legal and regulatory requirements. This can reduce the risk of costly legal disputes, protect the provider’s reputation, and increase client confidence in their services.
- Actual use of AI: By being transparent about the actual use of AI in their products, eDiscovery providers can avoid misleading clients and ensure that their AI-driven solutions deliver the promised benefits. This helps to build trust with clients and ensures that providers are offering genuine value through their AI-enabled products and services.
By adhering to the FTC’s guidance on AI claims, eDiscovery service and software providers can ensure that they build trust, protect their reputation, and drive business success in a competitive market.
Read the complete FTC article.
End Notes
- Jillson, E. (2021) Aiming for truth, fairness, and equity in your company’s use of ai, Federal Trade Commission. Federal Trade Commission. Available at: https://www.ftc.gov/business-guidance/blog/2021/04/aiming-truth-fairness-equity-your-companys-use-ai (Accessed: April 8, 2023).
- Atleson, M. (2023) Keep your AI claims in check, Federal Trade Commission. Federal Trade Commission. Available at: https://www.ftc.gov/business-guidance/blog/2023/02/keep-your-ai-claims-check (Accessed: April 8, 2023).
Additional Reading
- A Blinding Flash of the Obvious? Considering AI in eDiscovery Through the Lens of Business Impact Challenges
- Defining Cyber Discovery? A Definition and Framework
Source: ComplexDiscovery

The post Holding Providers Accountable? Considering AI in eDiscovery Service and Software Provider Marketing and Messaging appeared first on ComplexDiscovery.