Ask.discourse.com - Impossibile trovare un annuncio qui

Su un altro sito Discourse ho controllato Novità e ho visto

Quindi, avendo familiarità con i molti bot AI di Discourse, ho verificato se si trattasse di qualcosa di diverso e nuovo, e lo era.

C’era un singolo argomento nella categoria Annunci per questo? Non ricordo di averne visto uno.

2 Mi Piace

Penso che sia ancora una specie di beta.

3 Mi Piace

È stato annunciato in Lounge per un’apertura discreta https://meta.discourse.org/t/help-us-test-ask-discourse-com/324441?u=pfaffman

4 Mi Piace

Lo abbiamo annunciato ai clienti tramite “novità” ma non ancora a tutti i siti. È ancora presto e leggermente più ottimizzato per i clienti ospitati al momento, sebbene ovviamente ci sia molta sovrapposizione per la maggior parte delle domande.

9 Mi Piace

Non ho accesso alla lounge su questo forum, ma capisco cosa intendi.

1 Mi Piace

Questo è uno sviluppo interessante. Stavo pianificando di aprire un argomento Feature sull’abilitazione dell’accesso pubblico/ospite a una persona in modo che qualsiasi visitatore possa utilizzarla. È qualcosa che Discourse esplorerebbe, o forse è correlato a questa istanza di test rilasciata silenziosamente?

Ogni persona ha un’impostazione di gruppi consentiti, quindi ora puoi consentire a chiunque di utilizzare qualsiasi persona.

Mi scusi, avrei dovuto essere più chiaro, intendevo chiunque, come ospiti/anonimi: servirebbe a casi d’uso come doc-categories, dove non mi aspetto che tutti i lettori si registrino, ma voglio comunque permettere loro di chattare con i documenti.

1 Mi Piace

Sembra molto pericoloso permettere a persone che non hanno nemmeno effettuato l’accesso, e che potrebbero non essere nemmeno persone, di spendere i tuoi soldi.

Certo, sono necessitati alcuni limiti basati su IP/cookie. O anche un limite massimo di sicurezza globale.

Non vedo perché migliorare l’esperienza di supporto dovrebbe essere un problema. Se stai ospitando documentazione con Gitbook, pagheresti almeno $1200 all’anno, quel pacchetto include la possibilità per i tuoi visitatori di chattare con la tua documentazione. Se me lo chiedi, c’è una grande opportunità qui per CDCK :face_savoring_food:

In secondo luogo, ci sono diversi rapporti sui chatbot che riducono i costi (del supporto clienti).

3 Mi Piace

Tutto vero. Il mio punto è che non sai che sono tuoi clienti se non hanno effettuato l’accesso.

2 Mi Piace

Discourse Ask utilizza alcune delle IA Personas già disponibili o ne avete create di vostre specificamente per questo?

Ask utilizza una persona personalizzata, si basa su 2 strumenti personalizzati che effettuano chiamate API a meta.discourse.org.

Ci sono piani per rilasciarlo al pubblico?

Non c’è niente di “top secret” qui :slight_smile:

C’è un tema molto simile:

E lo strumento che utilizziamo ha il seguente script:

let terms;
let API_KEY = "...";

const categories = {
  61: "theme",
  6: "support",
  148: "data & reporting",
  164: "Documentation > Hosted Customers",
  177: "Community wiki",
  31: "installation",
  10: "Documentation",
  22: "plugin",
  1: "bug",
  106: "migration",
  120: "theme-component",
  105: "community support program",
  124: "General",
  157: "site feedback > forum summaries",
  152: "site feedback > theme feedback",
  168: "Documentation > Contributing",
  30: "releases",
  126: "Documentation > Using Discourse",
  2: "feature",
  63: "praise > comparison",
  9: "ux",
  27: "dev > translations",
  24: "sso",
  3: "site feedback",
  17: "Uncategorized",
  14: "marketplace",
  21: "support > wordpress",
  13: "announcements > blog",
  53: "Documentation > Site Management",
  5: "plugin > extras",
  65: "community",
  8: "installation > hosting",
  35: "praise",
  67: "announcements",
  178: "Community wiki > Administrators",
  167: "Documentation > Integrations",
  55: "Documentation > Self-Hosting",
  169: "Documentation > Migrating to Discourse",
  56: "Documentation > Developer Guides",
  7: "dev",
  179: "Community wiki > Developers",
  181: "Community wiki > Users",
  180: "Community wiki > Sysadmins"
};


function search(terms) {
   const encoded = encodeURIComponent(terms);
   const searchUrl = "https://meta.discourse.org/discourse-ai/embeddings/semantic-search.json?hyde=false&q=";
   result = http.get(`${searchUrl}${encoded}`, {'Api-Key': API_KEY });
   return processResults(JSON.parse(result.body));
}

function invoke(p) {
  if (!p.question) {
      terms = "No search performed!"
      return "You must supply the question parameter";
  }
  terms = p.question;
  let results = search(terms + " #documentation");
  let otherResults = search(terms);

  let topicIds = {};
  results.forEach(topic => { topicIds[topic.topic_id] = topic });
  otherResults.forEach(topic => {
      if (topicIds[topic.topic_id]) {
          return;
      }
      if (results.length > 15) {
          return;
      }

      results.push(topic);
  });

  if (results.length === 0) {
      return "No results found!"
  } else {
      return results;
  }
}

function processResults(json) {

    if (!json.topics) {
        return [];
    }

    const postData = {};
    json.posts.forEach( p => {
       postData[p.topic_id] = p;
    });

    // todo meta category map
    return json.topics.map(t => {
        let result = {};
        let post = postData[t.id];
        result.url = `/t/${t.slug}/${t.id}`;
        result.title = t.title;
        result.blurb = post.blurb;
        result.tags = t.tags;
        result.topic_id = t.id;
        result.category = categories[t.category_id];
        return result;
    });
}

function details() {
  return "Searching for: " + terms
}

La read tool usa:

let topicId;
let url = "https://meta.discourse.org";
const API_KEY = "...";
let title = "Unknown topic";

function invoke(p) {
    topicId = p.topicId;
    let jsonUrl = `https://meta.discourse.org/t/${p.topic_id}.json?include_raw=true`;
    result = http.get(jsonUrl, { 'Api-Key' : API_KEY });

    try {
       const parsed = JSON.parse(result.body);
       url = `https://meta.discourse.org/t/${parsed.slug}/${parsed.id}`;
       title = parsed.title;
       let raw = parsed.post_stream.posts.map( post => {
          let solution = "";
          if (post.is_solution) {
              solution = "(solution)";
          }
          return `post #${post.post_number}:${solution}\n${post.raw}`;
       }).join("\n\n");
       return llm.truncate(raw, 10000);
    } catch {
        return "Something went wrong, topic not found!"
    }
}
function details() {
  return `Read: <a href='${url}'>${title}</a>`;
}

3 Mi Piace