Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt

ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt

PHPz
PHPznach vorne
2023-04-12 21:43:042403Durchsuche

1​Hintergrund​

ChatGPT hat einen großen Schock in der Branche ausgelöst und in allen Gesellschaftsschichten wird über große Sprachmodelle und allgemeine künstliche Intelligenz diskutiert. KI hat eine mehr als fünfzigjährige Entwicklung hinter sich und befindet sich nun in einer kritischen Phase der horizontalen Entwicklung der Industriestruktur. Dieser Wandel ist auf den Paradigmenwechsel im Bereich NLP zurückzuführen, der sich von „Vortraining + Feinabstimmung“ zu „Vortraining, Aufforderung und Vorhersage“ entwickelt hat. In diesem neuen Modell passen sich nachgelagerte Aufgaben an das vorab trainierte Modell an, sodass ein großes Modell für mehrere Aufgaben geeignet ist. Dieser Wandel hat den Grundstein für die horizontale Arbeitsteilung in der KI-Branche gelegt. Nach und nach sind große Sprachmodelle entstanden, die sich auf die Verbindung von Benutzern und Modellen konzentrieren. Die Arbeitsteilung in der KI-Branche hat zunächst Gestalt angenommen, einschließlich der zugrunde liegenden Infrastruktur (Cloud-Dienstanbieter), großen Modellen, Prompt-Engineering-Plattformen und Terminalanwendungen. Da sich die KI-Branche verändert, können Entwickler große Sprachmodelle (LLM) und Prompt Engineering voll ausschöpfen, um innovative Anwendungen zu entwickeln.

2 Anwendung unter Prompt-Ops

Derzeit müssen wir eine Anwendung auf Basis von LLM entwickeln. Was ist das größte technische Problem, mit dem wir konfrontiert sind?

  • Das große Sprachmodell kann nicht mit dem Internet verbunden werden und kann nicht die neuesten Informationen abrufen
  • Das große Sprachmodell verfügt nicht über unsere privaten Daten und kann keine vertikalen Fragen beantworten
  • Die offene API (text-davinci-003) des Großes Sprachmodell ist nicht wie ChatGPT Hervorragende kontextbezogene Funktionen
  • Große Sprachmodelle können andere Tools nicht steuern.

2.1 Engineering-Frameworks wie Langchain lösen diese Engineering-Probleme

Nehmen Sie Langchain als Beispiel, um es einfach auszudrücken: LangChain ist eine Kapselung der zugrunde liegenden Fähigkeiten von LLM und eine Art Prompt Engineering oder Prompt-Ops.

  • Es kann auf verschiedene LLM-Dienste zugreifen und die Aufrufe verschiedener großer Sprachmodelle abstrahieren.
  • Es kann verschiedene PromptTemplates erstellen, um benutzerdefinierte Prompt-Vorlagen zu implementieren Dinge, in denen GPT-3 derzeit nicht gut ist, wie Suchen/Mathematik/Verknüpfen privater Datenbanken/Python-Code
  • Es kann Agenten verwenden, um LLM zu steuern, um zu bestimmen, welche Aktionen in welcher Reihenfolge ausgeführt werden sollen. Aktionen können darin bestehen, ein Tool zu verwenden und seine Ausgabe zu beobachten, oder es kann an den Benutzer zurückgegeben werden.
  • Über sein Speichermodul kann die Konversationsverlaufsmodellierung realisiert werden.
  • 2.2 Einige Beispiele für die Langchain-Entwicklung

Dies ist ein Beispiel für einen Demo-Vergleich mit ChatGPT und LangChain. Die Eingabe lautet: „Wer ist Jay Chous Frau?“ wird ihr aktuelles Alter mit 0,23 multipliziert?“ Es ist ersichtlich, dass die Antwortergebnisse von ChatGPT oder GPT-3.5 falsch sind, da sie keine Suchfunktionen haben. Die API, die LangChain in Kombination mit GPT-3.5 von OpenAI verwendet, gibt das richtige Ergebnis aus. Sie sucht nach und nach nach den richtigen Informationen und erhält das richtige Ergebnis, und der Zwischenprozess wird vom Framework automatisch verarbeitet Fragen. ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt

2.2.2 Konvertieren Sie natürliche Sprache in Python-Code und korrigieren Sie Fehler selbst.

ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt Dies ist ein sehr schockierendes Beispiel. In diesem Prozess werden undefinierte Funktionsfehler selbst gefunden und korrigiert. 2.2.3 Abfragen von NBA-Daten mit GPT-3 + Statmuse + Langchain Kombiniert, stellen Sie komplexe Datenfragen und erhalten Sie genaue Antworten. Zum Beispiel: „Wie hoch sind die durchschnittlichen Defensivpunkte der Boston Celtics pro Spiel in dieser NBA-Saison 2022–2023? Wie verändert sich die prozentuale Veränderung im Vergleich zum Durchschnitt der letzten Saison?“

2.2.4 Connect Python REPL öffnet den Browser um Musik abzuspielen

Eine hübsche Science-Fiction-Szene. Ich habe Langchain verwendet, um eine Verbindung zum Python REPL-Tool herzustellen, „Spiel mir ein Lied“ eingegeben, das WebBrowser-Paket importiert, den Code zum Öffnen des Browsers aufgerufen und es für mich abgespielt . Lied „never gonna give you up“

def pythonTool():
bash = BashProcess()
python_repl_util = Tool(
"Python REPL",
PythonREPL().run,
"""A Python shell. Use this to execute python commands. 
Input should be a valid python command.
If you expect output it should be printed out.""",
)
command_tool = Tool(
name="bash",
descriptinotallow="""A Bash shell. Use this to execute Bash commands. Input should be a valid Bash command.
If you expect output it should be printed out.""",
func=bash.run,
)
# math_tool = _get_llm_math(llm)
# search_tool = _get_serpapi()
tools = [python_repl_util, command_tool]
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
agent.run("给我播放一首音乐")
ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt

2.2.5   连接私有数据

连接私有数据对第三方企业做LLM应用来说非常重要。下面举几个例子

  • LangchainJs的文档,结合了Langchain:AI-powered search for LangchainJS Documentation,你可以直接问文档内容、技术细节。

ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt

  • 数据库产品 Supabase也做了同样的事情,将自己的文档与ChatGPT相连接,使得开发者可以很方便的询问/查找自己遇到的技术问题。https://supabase.com/docs

ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt

  • 政府信息问答的一个例子:Co-pilot for government

法律公文和政策条款一般都非常复杂繁琐,这个demo中将旧金山政府的信息用Langchain与GPT结合,做到询问其中细节能获得准确回复的效果。

ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt

> Entering new AgentExecutor chain...
I need to find out the size limit for a storage shed without a permit and then search for sheds that are smaller than that size.
Action: SF Building Codes QA System
Action Input: "What is the size limit for a storage shed without a permit in San Francisco?"
Observation: The size limit for a storage shed without a permit in San Francisco is 100 square feet (9.29 m2).


Thought:Now that I know the size limit, I can search for sheds that are smaller than 100 square feet.
Action: Google
Action Input: "Storage sheds smaller than 100 square feet"
Observation: Results 1 - 24 of 279 ...


Thought:I need to filter the Google search results to only show sheds that are smaller than 100 square feet and suitable for backyard storage.
Action: Google
Action Input: "Backyard storage sheds smaller than 100 square feet"
Thought:I have found several options for backyard storage sheds that are smaller than 100 square feet and do not require a permit. 
Final Answer: The size limit for a storage shed without a permit in San Francisco is 100 square feet. There are many options for backyard storage sheds that are smaller than 100 square feet and do not require a permit, including small sheds under 36 square feet and medium sheds between 37 and 100 square feet.

2.3   结合私有数据问答

LLM应用与私有数据交互非常重要,我看到无数人在问一些ChatGPT无法回答的问题了:问认不认识谁、问自己公司业务细节、问各种可能不包含在预训练数据集里的东西。这些都已用Langchain和LlaMaIndex来解决。试想一下,将私有数据与LLM相结合,将改变数据原有的访问方式,通过问答能很自然地获取到自己需要的信息,这是比当前的搜索/打标分类都要高效的数据交互方式。

2.3.1   如何构建一个基于私有数据的LLM问答系统

ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt

向量数据库现在看起来是构建LLM App中很关键的一个组件。首先 LLM 的预训练和微调过程不可能包含我们所期待的私有数据,因此如何将LLM关联到私有数据成为一个很关键的需求。而且LLM的“接口”-自然语言通常不是像Key-Value的映射那样精确地。而且在这一阶段我们希望LLM去理解我们的知识库,而不是简单的在其中搜索相同的字符串,我们希望询问关于我们知识库的细节,并给出一定理解后的答案(以及来源),这样匹配向量这样的搜索方式是一个非常合适且关键的解决方案。还有一个关键点是,LLM在每次调用是按token计费(即文本量),并且目前的接口的上下文有着4096 tokens的限制。,因此面对庞大的数据,我们也不可能将所有的数据一次性传给LLM。因此才有了第一张图那个流程图的结构。本地预先将我们私有的数据转成向量存在Qdrant里,用户问答时,将用户的问题转为向量,然后去Qdrant里进行搜索(相似性匹配)得到Top K个结果,然后将这些结果(注意这里的结果已经是自然语言了)传给LLM进行总结输出。

2.3.2   结合私有数据问答的抽象流程

这里使用Langchain社区博客的流程图为例

ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt

私有数据分割成小于LLM上下文的分块,创建向量后存入向量数据库

ChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt

将问题计算向量后在向量数据库进行相似性搜索,算出相关性较高的top k个结果后拼接prompt送往LLM获得答案。

2.3.3 Wichtige Komponenten

  • OpenAI Ada-Modell: Das Modell text-embedding-ada-002 kann schnell einen 1536-dimensionalen Vektor codieren. Wir können diesen Vektor verwenden, um die Ähnlichkeit zwischen Texten zu berechnen.
  • Langchain / LLamaIndex: Langchain enthält eine Vielzahl von Textsplittern und Dokumentkonnektoren, um das Aufteilen von Dateien und deren Indizierung in Vektordatenbanken zu erleichtern. Ähnlich wie jeder andere Datenkonnektor kann LlamaIndex Daten aus dem Vektorspeicher laden. Diese Daten können dann in der LlamaIndex-Datenstruktur verwendet werden.
  • Vektordatenbank, es gibt viele Optionen: Chroma / FAISS / Milvus / PGVector / Qdrant / Pinecone usw.

2.3.4 Private Bereitstellung von OpenAI und Kostenprobleme

Wenn Langchain zum Verknüpfen verwendet wird, wird angesichts großer privater Daten ein Einbettungsmodell (Ada von OpenAI) verwendet Berechnung Die Eingabe des Problemvektors, die Verwendung von Vektordatenbanken wie Qdrant zur Verwaltung von Vektoren und Vektorsuchen privater Daten sowie die Verwendung von Langchain als Zwischenverbindung können das Problem lösen, aber der Verbrauch von Token ist ein Kostenproblem, das nicht ignoriert werden kann. Private Bereitstellung + Feinabstimmung können die meisten der zuvor genannten Probleme lösen. Möglicherweise verwenden große und wohlhabende Unternehmen Modellinstanzen und Feinabstimmung, während unabhängige Entwickler in kleinen Unternehmen Frameworks wie Langchain verwenden. Wenn die LLM-Dienstfunktionen von OpenAI in Zukunft überlaufen, wird Prompt möglicherweise nicht mehr benötigt und die Funktionen von Langchain sind möglicherweise sogar enthalten. Für die Entwicklung und den Zugriff auf LLM-Anwendungen ist möglicherweise nur ein Schnittstellenaufruf erforderlich.

2.4  LLM-Anwendungstechnologie-Stack im Jahr 2023

2023 Der neueste Technologie-Stack zur einfachen Erstellung von KI-Demo:

  • Hosting: Vercel
  • Front-End: Next.js
  • Back-End: Vercel mit Flasche
  • Datenbank: Supabase.
  • AI-Modell: OpenAI / Replicate / Hugging Face Diese Hinweise zu Langchain – Widerstand gegen Tools wie Ops: stream.thesephist.com Das Hauptproblem besteht darin, dass es in solchen Tools/Frameworks etwas verrückt ist, natürliche Sprache als Verbindung zwischen Code und LLM zu verwenden und nichtdeterministische Sprache zu verwenden Sprache selbst als Kontrollfluss. Darüber hinaus ist die Bewertung des Modellausgabeeffekts mittlerweile eine sehr mühsame Aufgabe. Viele von ihnen pflegen eine riesige Tabelle und verlassen sich bei der Bewertung auf Menschen. (Es gibt auch Pläne, LLM zur Evaluierung von LLM zu verwenden, was noch relativ früh ist.) Bevor es also in Produktion gehen kann, muss möglicherweise noch viel Arbeit geleistet werden, um den Benutzern tatsächlich gegenüberzutreten, und nicht als Twitter-Demonstration.
  • Lassen Sie uns ausführlich über die großen Herausforderungen sprechen, denen wir in der Testphase gegenüberstehen. Wenn Ihr Produkt über eine Reihe von Eingabeaufforderungen verfügt, die während der Entwicklungsphase gut funktionieren, können Sie nach der Übergabe zum Testen möglicherweise Probleme identifizieren, indem Sie Hunderte oder Tausende davon testen. Da die Wirkung nicht garantiert werden kann, wird es große Herausforderungen geben, es tatsächlich für C-End-Benutzer bereitzustellen. Und wenn Sie keine Feinabstimmungsdienste oder Modellinstanzen verwenden und OpenAI das Modell aktualisiert, müssen möglicherweise alle Eingabeaufforderungen in Ihrer Produktionsumgebung erneut auf ihre Wirkung getestet werden. Ihre Eingabeaufforderungen müssen ebenso wie der Code nach Version verwaltet werden. Unabhängig davon, ob Eingabeaufforderungsänderungen vorliegen oder nicht, muss jede Version einem Regressionstest unterzogen werden, bevor sie online geht. Ohne eine gute automatisierte Bewertungslösung müssten viele Fälle manuell geprüft werden, was viel Personal verbrauchen würde.
  • Es gibt derzeit viele gute technische Lösungen für die Entwicklung von LLM-Anwendungen, die private Daten kombinieren. Es ist einfach, eine Demo mit guten Ergebnissen auszuführen, aber eine solche Anwendung muss dennoch mit großer Vorsicht behandelt werden. Schließlich machen wir nicht nur ein Projekt, um vor sozialen Medien oder Führungskräften zu demonstrieren. Für die Benutzereingabe wird ein Dialogfeld bereitgestellt, das so umfangreich ist, dass selbst beim Testen von Zehntausenden von Ergebnissen unerwartete Ergebnisse auftreten können. Schließlich werden auch Produkte wie New Bing und ChatGPT zur Injektion aufgefordert. Angesichts dieser Ungewissheit sind die Frage, wie man sie in der Technik vermeiden und in Tests abdecken kann, alles Fragen, die für ausgereifte Produkte gelöst werden müssen, sonst gibt es noch viel zu tun.
Aber ich glaube nicht, dass es notwendig ist, diese Art von Prompt-Ops-Tool/Framework vollständig zu verneinen. Schließlich können in dieser Phase tatsächlich viele gute Demos erstellt werden, um Ideen zu überprüfen.

3 Einige mögliche Produktformen in der Zukunft

Lassen Sie uns über die möglichen Formen von LLM-Anwendungen sprechen, nachdem die ChatGPT-API geöffnet wurde.

  • Konversations-Chat ist die intuitivste Anwendungsmethode und der Konversationsverlauf wird über die API verwaltet.
  • Virtueller Charakter-Chat, basierend auf dem Basis-Konversations-Chat, führt einige Zeichendefinitionsaufforderungen in der prefix_message der API durch, um einen ähnlichen Effekt wie Character.ai zu erzielen. Tiefer zu gehen kann als Spielfigur, virtuelle Person, XR-Assistent usw. erfolgen.
  • Ein textgestütztes Schreibtool ähnlich wie Notion. Derzeit haben Notion und FlowUs ähnliche Anwendungen entwickelt. Zukünftig wird auch die Integration von Verlagen in verschiedene Communities ein Trend sein, wodurch die Hürde für die Veröffentlichung durch Benutzer gesenkt und die Qualität der Veröffentlichung verbessert wird.
  • Das Datenzusammenfassungstool implementiert Chat-Your-Data, stellt Benutzern Dokumenteneingaben zur Verfügung und ermöglicht Benutzern das Chatten mit den von ihnen bereitgestellten Daten. Im Wesentlichen handelt es sich dabei nur um öffentliche Daten im Internet und private Daten von Benutzern.
  • Chat-Your-Data für große Unternehmen: Jedes große Unternehmen kombiniert die privaten Daten großer Unternehmen, um basierend auf dem ursprünglichen Geschäft bessere Dienste bereitzustellen. Dianping, das Benutzerbewertungen kombiniert, kann beispielsweise „Ich möchte in eine Bar gehen, die Neo-Soul- und R&B-Musik spielt“ verwenden. Beispielsweise kann unsere Geschäftsdetailseite alle Benutzerbewertungen dieses Produkts zusammenfassen und Benutzern dies ermöglichen Geben Sie Informationen zu diesem Produkt.
  • Integrieren Sie Regierungsangelegenheiten, medizinische Versorgung, Bildung und andere Bereiche, integrieren Sie offizielle Online-Websites von Institutionen und Offline-Großbildschirme, um bessere Bürgerdienste bereitzustellen.
  • In Kombination mit anderen Tools wie IFTTT oder verschiedenen privaten Protokollen kann LLM auf weitere Tools und Systeme zugreifen, zum Beispiel: IoT-Szenarien, Office Copilot.

LLM-Anwendung ist eigentlich eine neue Art der Mensch-Computer-Interaktion, die es Benutzern ermöglicht, mit unserem aktuellen System in natürlicher Sprache zu kommunizieren. Viele Anwendungen können sogar auf nur ein Chat-Fenster vereinfacht werden.

4 Zusammenfassung

Aufgrund der hohen Kosten für die allgemeine Schulung/Bereitstellung großer Modelle sind die Bedingungen für die Arbeitsteilung auf industrieller Ebene grundsätzlich ausgereift. Es besteht weltweit kein Bedarf für viele große Modelle, und LLM-Anwendungen werden dies tun Seien Sie klein und mittelgroß. Die unvermeidliche Wahl für Unternehmen und einzelne Entwickler. Neue Formen von Programmier-/Engineering-Paradigmen erfordern, dass Ingenieure sie rechtzeitig erlernen und verstehen. Der aktuelle Open-Source-Technologie-Stack kann bereits die Anforderungen der meisten Produkte erfüllen. Sie können eine kurze Demo ausprobieren, um Ihre Ideen zu überprüfen.

Referenzen:

  • https://blog.langchain.dev/tutorial-chatgpt-over-your-data/

Tutorial: ChatGPT über Ihre Daten

  • https://qdrant.tech/articles/ LANGChain -Integration/

Fragenbeantwortung mit Langchain und QDrant mit Bithout Boilerplate

  • https: //mp.weixin.qq.com/s/vz6n4bh41yvd1yvd1hqgq

Atom AL: Tiefgreifender industrieller Wandel durch ChatGPT

Das obige ist der detaillierte Inhalt vonChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen