Im Beitrag „Generierung einer KI-News-Seite mit ChatGPT und GDELT“ habe ich bereits gezeigt, wie es prinzipiell möglich ist, eine einfache themenspezifische News-Seite zu erzeugen.
Heute möchte ich mit Hilfe von ChatGPT für die News-Seite eine kleine Optimierung einbauen. Und zwar werden aktuell ähnliche Nachrichten bzw. sogar Nachrichten mit exakt demselben Titel angezeigt.
Hier der Chatverlauf:
Folgender PHP Code müsste dahingehend angepasst werden, dass wenn Titel mehrfach vorkommen, nur der erste Datensatz verwendet wird. Außerdem sollen maximal 5 Datensätze ausgegeben werden.
function display_ai_news_data() {
$url = 'https://api.gdeltproject.org/api/v2/doc/doc?format=html×pan=24H&query=Artificial%20Intelligence%20sourcelang:eng&mode=artlist&maxrecords=5&format=json&sort=hybridrel';
$response = wp_remote_get( $url );
if ( is_array( $response ) ) {
$headers = $response['headers'];
$body = json_decode( $response['body'], true );
if ( ! empty( $body ) && isset( $body['articles'] ) ) {
$articles = $body['articles'];
foreach ( $articles as $article ) {
$title = $article['title'];
$url = $article['url'];
$image = $article['socialimage'];
echo '<div>';
echo '<h2>' . $title . '</h2>';
echo '<img src="' . $image . '" />';
echo '<p><a href="' . $url . '">Read more</a></p>';
echo '</div>';
}
}
}
}
Hier ist eine aktualisierte Version des Codes, der nur den ersten Datensatz für jedes Titel duplikat verwendet und maximal 5 Datensätze ausgibt:
function display_ai_news_data() {
$url = 'https://api.gdeltproject.org/api/v2/doc/doc?format=html×pan=24H&query=Artificial%20Intelligence%20sourcelang:eng&mode=artlist&maxrecords=5&format=json&sort=hybridrel';
$response = wp_remote_get( $url );
if ( is_array( $response ) ) {
$headers = $response['headers'];
$body = json_decode( $response['body'], true );
if ( ! empty( $body ) && isset( $body['articles'] ) ) {
$articles = $body['articles'];
$used_titles = array();
foreach ( $articles as $article ) {
$title = $article['title'];
if (in_array($title, $used_titles)) {
continue; // Skip articles with already used title
}
$used_titles[] = $title; // Mark this title as used
$url = $article['url'];
$image = $article['socialimage'];
echo '<div>';
echo '<h2>' . $title . '</h2>';
echo '<img src="' . $image . '" />';
echo '<p><a href="' . $url . '">Read more</a></p>';
echo '</div>';
if (count($used_titles) >= 5) {
break; // Limit reached, stop the loop
}
}
}
}
}
Kannst du das so umschreiben, dass die 5 anzuzeigenden Datensätze zufällig aus articles gewählt werden?
Ja, das kann ich gerne machen! Hier ist eine aktualisierte Version des Codes, die zufällig 5 Datensätze aus articles auswählt:
function display_ai_news_data() {
$url = 'https://api.gdeltproject.org/api/v2/doc/doc?format=html×pan=24H&query=Artificial%20Intelligence%20sourcelang:eng&mode=artlist&maxrecords=50&format=json&sort=hybridrel';
$response = wp_remote_get( $url );
if ( is_array( $response ) ) {
$headers = $response['headers'];
$body = json_decode( $response['body'], true );
if ( ! empty( $body ) && isset( $body['articles'] ) ) {
$articles = $body['articles'];
shuffle($articles); // randomly shuffle the array
$used_titles = array();
$count = 0;
foreach ( $articles as $article ) {
if ($count >= 5) {
break; // limit reached
}
$title = $article['title'];
if (in_array($title, $used_titles)) {
continue; // Skip articles with already used title
}
$used_titles[] = $title; // Mark this title as used
$url = $article['url'];
$image = $article['socialimage'];
echo '<div>';
echo '<h2>' . $title . '</h2>';
echo '<img src="' . $image . '" />';
echo '<p><a href="' . $url . '">Read more</a></p>';
echo '</div>';
$count++;
}
}
}
}
Der Code verwendet die shuffle() Funktion, um das articles Array zufällig zu mischen. Danach wird eine foreach Schleife verwendet, um jeden Artikel in der zufälligen Reihenfolge zu durchlaufen. Der Code verwendet auch das $used_titles Array, um zu überprüfen, ob der Titel bereits verwendet wurde. Wenn der Titel bereits verwendet wurde, wird der Datensatz übersprungen. Andernfalls wird der Datensatz ausgegeben und der Titel wird als bereits verwendet markiert. Wenn die maximale Anzahl von 5 Datensätzen erreicht ist, wird die Schleife gestoppt.
Ich hoffe, das hilft!
Auch diesen Code konnte ich direkt einsetzen.
ChatGPT hat mir darüber hinaus noch die Code-Änderungen erklärt und sogar aus dem Kontext heraus den Wert von maxrecords beim Api-Aufruf von 5 auf 50 erhöht, obwohl ich das explizit gar nicht verlangt habe.
Zusammenfassend kann man sagen, dass ChatGPT eine großartige Unterstützung bei Code-Optimierungen bietet. Dank seiner Fähigkeiten im Bereich maschinelles Lernen und künstliche Intelligenz kann ChatGPT schnell und präzise auf Fragen und Anfragen zum Thema Programmierung reagieren und individuell Lösungen anbieten.