AI Personal Learning
und praktische Anleitung

Nutzung der Such-API von DuckDuckGo, um großen Models freien Zugang zu den Netzwerkfunktionen zu geben, um einen New Bing-ähnlichen Effekt zu erzielen.

Überblick über das Projekt

Durch die Integration von DuckDuckGo Such-APIs, die dem gemeinsamen großen Sprachmodell eine ähnliche Neues Bing Web-Zugang in Echtzeit und intelligente Frage- und Antwortfunktionen. Multiplexing großer Modelle bestehender FunktionsaufrufFunktionen für eine effiziente und flexible Verarbeitung von Anfragen und die Generierung von Antworten.

Kern-Umsetzung

Das System verwendet die Funktionsaufruf Mechanismus für die nahtlose Integration von Anfrageverarbeitung und Antwortgenerierung:

  1. Abfrageanalyse und Suche: Verwendung claude-3-haiku vielleicht gpt-3.5-turbo Das einfachere Modell erzeugt optimierte Suchbegriffe und ruft die Such-API über Funktionsaufrufe auf.
  2. Websuche: Rufen Sie die DuckDuckGo API auf, um Informationen in Echtzeit abzurufen.
  3. Intelligente Antwortgenerierung: mit claude-3-5-sonnnet vielleicht gpt-4o Komplexere Modelle wie diese kombinieren Suchergebnisse und ursprüngliche Fragen, um genaue und umfassende Antworten zu generieren.

Code-Implementierung

1. die Umgebungseinstellungen und Funktionsdefinitionen

importieren os
json importieren
von openai importieren OpenAI
from duckduckgo_search import DDGS
API_KEY = os.getenv("OPENAI_API_KEY")
BASE_URL = os.getenv("OPENAI_BASE_URL")
client = OpenAI(api_key=API_KEY, base_url=BASE_URL)
FUNCTIONS = [
{
"name": "search_duckduckgo",
"description": "Suchen Sie nach Informationen mit der DuckDuckGo-Suchmaschine. Sie können nach den neuesten Nachrichten, Artikeln, Blogs und mehr suchen." ,
"Parameter": {
"Typ": "Objekt",
"Eigenschaften": {
"keywords": {
"type": "array", "items": { "type": "string", { "string": {
"items": { "type": "string"}, "description": "searchlist".
"description": "Eine Liste von Schlüsselwörtern, nach denen gesucht werden soll. Zum Beispiel: ['Python', 'maschinelles Lernen', 'jüngste Fortschritte']."
}
},.
"required": ["keywords"]
}
}
]

2. verwandte Hilfsfunktionen

def search_duckduckgo(keywords):
search_term = " ".join(keywords)
with DDGS() as ddgs:
return list(ddgs.text(keywords=search_term, region="cn-zh", safesearch="on", max_results=5))
def print_search_results(results):
for result in results:
print(
f"标题: {result['title']}\n链接: {result['href']}\n摘要: {result['body']}\n---")
def get_openai_response(messages, model="gpt-3.5-turbo", functions=None, function_call=None):
try:
response = client.chat.completions.create(
model=model,
messages=messages,
functions=functions,
function_call=function_call
)
return response.choices[0].message
except Exception as e:
print(f"调用OpenAI API时出错: {str(e)}")
return None
def process_function_call(response_message):
function_name = response_message.function_call.name
function_args = json.loads(response_message.function_call.arguments)
print(f"\n模型选择调用函数: {function_name}")
if function_name == "search_duckduckgo":
keywords = function_args.get('keywords', [])
if not keywords:
print("错误:模型没有提供搜索关键词")
return None
print(f"关键词: {', '.join(keywords)}")
function_response = search_duckduckgo(keywords)
print("\nDuckDuckGo搜索返回结果:")
print_search_results(function_response)
return function_response
else:
print(f"未知的函数名称: {function_name}")
return None

3. die wichtigsten Verarbeitungsfunktionen

def main(Frage).
print(f "Frage: {Frage}")
messages = [{"role": "user", "content": question}]
response_message = get_openai_response(
messages, functions=FUNCTIONS, function_call="auto")
if not response_message: return
if not response_message: return
if response_message.function_call.
function_response = process_function_call(response_message)
if function_response.
messages.extend([
response_message.model_dump(), {
{
"role": "function", "name": response_message.model_dump(), {
"name": response_message.function_call.name, {
"Inhalt": json.dumps(function_response, ensure_ascii=False)
}
])
final_response = get_openai_response(messages, model="gpt-4o")
if final_response.
print("\n endgültige Antwort:")
print(final_response.content)
else: if final_response: print("\n endgültige Antwort:")
print("\n model direct response:")
print(response_message.content)

Realisierung

Auf diese Weise können große Modelle erstellt werden, mit denen beispielsweise eine Vielzahl von Fragen beantwortet werden kann:

  1. Geografische Informationen: "Gehört Foshan zur PRD?"
  2. Fragen zu den eigenen Fähigkeiten der KI, "Was kannst du?"
  3. Domänenspezifische Frage: "Wer ist der Autor von Plants vs. Zombies Hybrid?"
  4. Philosophische Betrachtung: "Das Leben besteht aus zwei Worten, welche zwei Worte sind es?"
  5. Aktuelle Veranstaltungen zum Thema "Was ist springende Ungleichheit?"
  6. Zeitbezogene Frage: "Wie spät ist es jetzt in Peking?

Nutzung der Such-API von DuckDuckGo, um großen Models freien Zugang zu den Netzwerkfunktionen zu geben, um einen New Bing-ähnlichen Effekt zu erzielen.

 


Vollständiger Code

import os
import json
from openai import OpenAI
from duckduckgo_search import DDGS

API_KEY = os.getenv("OPENAI_API_KEY")
BASE_URL = os.getenv("OPENAI_BASE_URL")
client = OpenAI(api_key=API_KEY, base_url=BASE_URL)

FUNCTIONS = [
{
"name": "search_duckduckgo",
"description": "使用DuckDuckGo搜索引擎查询信息。可以搜索最新新闻、文章、博客等内容。",
"parameters": {
"type": "object",
"properties": {
"keywords": {
"type": "array",
"items": {"type": "string"},
"description": "搜索的关键词列表。例如:['Python', '机器学习', '最新进展']。"
}
},
"required": ["keywords"]
}
}
]

def search_duckduckgo(keywords):
search_term = " ".join(keywords)
with DDGS() as ddgs:
return list(ddgs.text(keywords=search_term, region="cn-zh", safesearch="on", max_results=5))

def print_search_results(results):
for result in results:
print(
f"标题: {result['title']}\n链接: {result['href']}\n摘要: {result['body']}\n---")

def get_openai_response(messages, model="gpt-3.5-turbo", functions=None, function_call=None):
try:
response = client.chat.completions.create(
model=model,
messages=messages,
functions=functions,
function_call=function_call
)
return response.choices[0].message
except Exception as e:
print(f"调用OpenAI API时出错: {str(e)}")
return None

def process_function_call(response_message):
function_name = response_message.function_call.name
function_args = json.loads(response_message.function_call.arguments)

print(f"\n模型选择调用函数: {function_name}")

if function_name == "search_duckduckgo":
keywords = function_args.get('keywords', [])

if not keywords:
print("错误:模型没有提供搜索关键词")
return None

print(f"关键词: {', '.join(keywords)}")

function_response = search_duckduckgo(keywords)
print("\nDuckDuckGo搜索返回结果:")
print_search_results(function_response)

return function_response
else:
print(f"未知的函数名称: {function_name}")
return None

def main(question):
print(f"问题:{question}")

messages = [{"role": "user", "content": question}]
response_message = get_openai_response(
messages, functions=FUNCTIONS, function_call="auto")

if not response_message:
return

if response_message.function_call:
if not response_message.content:
response_message.content = ""
function_response = process_function_call(response_message)
if function_response:
messages.extend([
response_message.model_dump(),
{
"role": "function",
"name": response_message.function_call.name,
"content": json.dumps(function_response, ensure_ascii=False)
}
])

final_response = get_openai_response(messages, model="gpt-4o")
if final_response:
print("\n最终回答:")
print(final_response.content)
else:
print("\n模型直接回答:")
print(response_message.content)

if __name__ == "__main__":
main("植物大战僵尸杂交版的作者是谁?他是怎么想到做出来这个游戏的?")
AI Leichtes Lernen

Der Leitfaden für Laien zum Einstieg in die KI

Hilft Ihnen, die Nutzung von KI-Tools kostengünstig und von Null an zu erlernen.KI ist, wie Bürosoftware, eine wesentliche Fähigkeit für jeden. Die Beherrschung von KI verschafft Ihnen einen Vorteil bei der Stellensuche und die Hälfte des Aufwands bei Ihrer zukünftigen Arbeit und Ihrem Studium.

Details ansehen>
Darf nicht ohne Genehmigung vervielfältigt werden:Chef-KI-Austauschkreis " Nutzung der Such-API von DuckDuckGo, um großen Models freien Zugang zu den Netzwerkfunktionen zu geben, um einen New Bing-ähnlichen Effekt zu erzielen.

Chef-KI-Austauschkreis

Der Chief AI Sharing Circle konzentriert sich auf das KI-Lernen und bietet umfassende KI-Lerninhalte, KI-Tools und praktische Anleitungen. Unser Ziel ist es, den Nutzern dabei zu helfen, die KI-Technologie zu beherrschen und gemeinsam das unbegrenzte Potenzial der KI durch hochwertige Inhalte und den Austausch praktischer Erfahrungen zu erkunden. Egal, ob Sie ein KI-Anfänger oder ein erfahrener Experte sind, dies ist der ideale Ort für Sie, um Wissen zu erwerben, Ihre Fähigkeiten zu verbessern und Innovationen zu verwirklichen.

Kontaktieren Sie uns
de_DE_formalDeutsch (Sie)