From b56bafb05cc5b303469f939e75b1337c4e57c745 Mon Sep 17 00:00:00 2001 From: pkosanam Date: Tue, 12 Sep 2023 13:41:25 +0530 Subject: [PATCH 1/4] NR-158339 Wave2 OpenSource AI Quickstarts --- quickstarts/anyscale/config.yml | 54 +++++++++++++++++++++++++++ quickstarts/anyscale/logo.svg | 1 + quickstarts/jina-ai/config.yml | 54 +++++++++++++++++++++++++++ quickstarts/jina-ai/logo.svg | 13 +++++++ quickstarts/myscale/config.yml | 61 +++++++++++++++++++++++++++++++ quickstarts/myscale/logo.jpeg | Bin 0 -> 61275 bytes quickstarts/ollama/config.yml | 51 ++++++++++++++++++++++++++ quickstarts/ollama/logo.png | Bin 0 -> 7487 bytes quickstarts/starrocks/config.yml | 53 +++++++++++++++++++++++++++ quickstarts/starrocks/logo.png | Bin 0 -> 6408 bytes 10 files changed, 287 insertions(+) create mode 100644 quickstarts/anyscale/config.yml create mode 100644 quickstarts/anyscale/logo.svg create mode 100644 quickstarts/jina-ai/config.yml create mode 100644 quickstarts/jina-ai/logo.svg create mode 100644 quickstarts/myscale/config.yml create mode 100644 quickstarts/myscale/logo.jpeg create mode 100644 quickstarts/ollama/config.yml create mode 100644 quickstarts/ollama/logo.png create mode 100644 quickstarts/starrocks/config.yml create mode 100644 quickstarts/starrocks/logo.png diff --git a/quickstarts/anyscale/config.yml b/quickstarts/anyscale/config.yml new file mode 100644 index 0000000000..b97a32cdd9 --- /dev/null +++ b/quickstarts/anyscale/config.yml @@ -0,0 +1,54 @@ +slug: anyscale +description: | + ## Why should you monitor your usage of Anyscale? + Monitor your application powered by Anyscale language models to ensure, get visibility to what you send to Anyscale, responses received from Anyscale , latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive Anyscale monitoring quickstart + Our Anyscale quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the Anyscale quickstart? + New Relic Anyscale monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Anyscale usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your Anyscale usage with New Relic Anyscale quickstart. +icon: logo.svg +level: + - New Relic +authors: + - New Relic +title: Anyscale +documentation: + - name: Anyscale integration documentation + description: | + Implement monitoring and instrumentation for your Anyscale app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - anyscale + - large language model + - natural language processing + - machine learning + - artificial intelligence + - ai + - anyscale ai + - cloud native + - llm + - llm chains + - deep learning + - distributed computing + - kubernetes + - generative ai + - mlops + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/anyscale/logo.svg b/quickstarts/anyscale/logo.svg new file mode 100644 index 0000000000..2dc2553cfe --- /dev/null +++ b/quickstarts/anyscale/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/quickstarts/jina-ai/config.yml b/quickstarts/jina-ai/config.yml new file mode 100644 index 0000000000..7799843207 --- /dev/null +++ b/quickstarts/jina-ai/config.yml @@ -0,0 +1,54 @@ +slug: jina-ai +description: | + ## Why should you monitor your usage of Jina AI? + Monitor your application powered by Jina AI language models to ensure, get visibility to what you send to Jina AI, responses received from Jina AI , latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive Jina AI monitoring quickstart + Our Jina AI quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the Jina AI quickstart? + New Relic Jina AI monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Jina AI usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your Jina AI usage with New Relic Jina AI quickstart. +icon: logo.svg +level: + - New Relic +authors: + - New Relic +title: Jina AI +documentation: + - name: Jina AI integration documentation + description: | + Implement monitoring and instrumentation for your Jina AI app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - jina-ai + - large language model + - natural language processing + - machine learning + - artificial intelligence + - ai + - jina ai + - cloud native + - llm + - llm chains + - generative ai + - jinaai + - multimodal ai + - neural search + - mlops + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/jina-ai/logo.svg b/quickstarts/jina-ai/logo.svg new file mode 100644 index 0000000000..79c4690d64 --- /dev/null +++ b/quickstarts/jina-ai/logo.svg @@ -0,0 +1,13 @@ + + + Company logo_dark + + + + + + + + + + \ No newline at end of file diff --git a/quickstarts/myscale/config.yml b/quickstarts/myscale/config.yml new file mode 100644 index 0000000000..701bef95d5 --- /dev/null +++ b/quickstarts/myscale/config.yml @@ -0,0 +1,61 @@ +slug: myscale +description: | + ## Why should you monitor your usage of MyScale? + + Monitor your vector searches on MyScale to get visibility on what you send to MyScale, responses retrieved from MyScale, latency, usage and errors. + + ### Track the query performance of your Vector DB + Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. + + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. + + + ### What’s included in this quickstart? + + New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + + - Vector searches + - Alerts for errors, search per vector store, and response time + - Identify popular queries, sources, and content + +summary: | + Monitor your Vector search's performance and quality with New Relic MyScale quickstart. +icon: logo.jpeg +level: New Relic +authors: + - New Relic +title: MyScale +documentation: + - name: LangChain Vector Database integration documentation + description: | + Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain-vectordb +keywords: + - langchain + - vector store + - myscale + - vector search + - vectordb + - vector db + - my scale + - myscale ai + - my scale ai + - conversational ai + - ai + - chatbots + - natural language processing + - machine learning + - deep learning + - aiops + - devops + - cloud computing + - intelligent automation + - mlops + - NR1_addData +dashboards: + - langchain-vectordb +alertPolicies: + - langchain-vectordb \ No newline at end of file diff --git a/quickstarts/myscale/logo.jpeg b/quickstarts/myscale/logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ef6e2871beef562db7bf03da3d3f086a1bf23405 GIT binary patch literal 61275 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 )%;%y|_0d10zmSI4e=bL*Rgk!>@a> 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 Date: Thu, 14 Sep 2023 10:44:09 +0530 Subject: [PATCH 2/4] added OpenLLM quickstart --- quickstarts/openllm/config.yml | 54 +++++++++++++++++++++++++++++++++ quickstarts/openllm/logo.jpeg | Bin 0 -> 3183 bytes 2 files changed, 54 insertions(+) create mode 100644 quickstarts/openllm/config.yml create mode 100644 quickstarts/openllm/logo.jpeg diff --git a/quickstarts/openllm/config.yml b/quickstarts/openllm/config.yml new file mode 100644 index 0000000000..22d1a0672a --- /dev/null +++ b/quickstarts/openllm/config.yml @@ -0,0 +1,54 @@ +slug: openllm +description: | + ## Why should you monitor your usage of OpenLLM? + Monitor your application powered by OpenLLM language models to ensure, get visibility to what you send to OpenLLM, responses received from OpenLLM , latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + ### Track your app: + By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. + ### Early issue detection: + Detect and address issues early to prevent them from affecting model performance. + + ## Comprehensive OpenLLM monitoring quickstart + Our OpenLLM quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. + + ## What’s included in the OpenLLM quickstart? + New Relic OpenLLM monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your OpenLLM usage. These reports include: + - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) + - Alerts (errors, request per model and response time) +summary: | + Improve the visibility of your OpenLLM usage with New Relic OpenLLM quickstart. +icon: logo.jpeg +level: + - New Relic +authors: + - New Relic +title: OpenLLM +documentation: + - name: OpenLLM integration documentation + description: | + Implement monitoring and instrumentation for your OpenLLM app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + url: https://github.com/newrelic/nr-openai-observability +dataSourceIds: + - langchain +keywords: + - openllm + - large language model + - natural language processing + - machine learning + - artificial intelligence + - ai + - openllm ai + - cloud native + - llm + - llm chains + - deep learning + - distributed computing + - kubernetes + - generative ai + - mlops + - NR1_addData +alertPolicies: + - langchain +dashboards: + - langchain \ No newline at end of file diff --git a/quickstarts/openllm/logo.jpeg b/quickstarts/openllm/logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..5518e1a6f3aab827ef4483129bf16460c73e3cc5 GIT binary patch literal 3183 zcmd^>c~Fx{8pb;$Aqj^Fgi{~`2?8UET!YB*!6>3Kir^qDC_zyXuhA&WA@U(NB8%XG zuu9}m6px4;4u~KS0hvV(g+M?#B10SyLbw7X-?vexrgqk;nw|Y)x3>1Jdb+x*yQ|+{ zJzY;V+Ku*tI6#z@CCK851OkCXBFZU{6&2*=6|_`TmB_l<6g^#S9i1;|tBk%dFs16~ z7~7bbt~R%_vZ5H-I;^pCV&AHGosbtLU3M%c^?p zCKwziTbxPHB~rgGu2u7F7tk#CFk(n@>Kd9_+J?)Gj7`3@vi{0ujqTcX>s>auZrrqa z`?p>@ynX)U8@PAh{-6WF2Tz;~`EzJkctmVmd_rPU^4W|F7cX7TypoljmtSz>X5p>d zMGs3#%gP^pUr||C&wkd>*z~-)3q3cW{XJcKF8;{=1(hg;UcrvvZ>P1q{G` z!jX=jfc}9;S;`}W!(nlR4?Gx|P^qxWIJ~~OtctS-VfS%W1B)|6^4ICP#kC}=rKdn` z52Ia9on|#?IQaqTBhkMG6!UKp{Q~q056T4!Sd7##tTKSW+=6jlwA_DM!{S4{mSs=5 zjJ|`OR+%c3-vz5HWH5JkM_dq#?zSeOK=oulCK&PQ4Y~8TikLP%=KGpFr0@~LK4_3O zB^u$8IwPG;sw!gMxD~u{^a}9$7So1*eco=VF}6*0$eo??OhcW%#LzEv826&Kc;Y;C z$qrFP!CCtBR#%A_;`!IOfN+A?2nFOC{?)Wa5!{d_az{+yc3aAv00pTL5;Ep3MZgq$ zq9Bg}O$?$y8ybW}H&C$tE!4XZu?O>(X)10p3myX7}hfs_4F5U2l1QGfLVXci( zdgZj>+03HZ$&n=C&Oo6YG+;eO1|BZImiHC0ho~%Q;CsrJm*0f?j-}LvxE+hITwE|4 z3L7meayWS>!c)VP7k4s#(}V)d<&3-XHj! zmUAdw5oE|M<#ummMiaw_a|?OVFZ39P$CjBPiMrv25&dKDQDCSyg48}l z0snX#;nhVC7eM|Eg;VOG`4zA-JUR?b8?kn>sG=b0(eH-LB$0(k+|203f2P7rHNH1P z0R_=P!Ts$huwoHdVG^l{JQUP3XPV(3FAYos?|c8dJ*lM(wW|1vTAsc3 zcFZlZi+}g7MvpLjj;hx=9hF|>cPPRk=k|Vf@9Vk}*Ywx~t=c)(h4%S#oCgk`3}pZK34n*A@Ep!s_~;BI-<^ z9I9P{vNLhb6zyoNLn4kDaH!sj#WiD_|HNOo7k`d>3YsuDqou3SxhXKiVPVm`M7&jS zILB6SxN=w39o;_0y=N70Lv?6JHBrPxfw!C8JR@Og-Ec! zlKZ|VQ2B~J-+;(Ceb3N^yXJ-vDgO%1I8cI9u6BpqD)}{8BPVK z=`NAED3D)lgr+6~Q4pQ~A@1WPJm$Qp7zIx~5G%~gX*FS@*la?YHLcIm5ScV-+W%f7 zH%djxla!&AV^P}0RU5ezEA-3bT+5)Ok`OQKeaEXKWXwC5^wtjrNhnxawqlQ7hZ}q2 zu&z$Rh1`iz(b<`Wkt(ghWlH!khT?Me(cY;RbIsra2Oq=-`#`2r`?D7{&zsFeK^h8{ zz#J14WP8VQs-rptn?^(oUa+wIMf_vgW*wNhS+MrAqn{q<)g)n4al_ql_LoKHGTZ}< zWllrxk2^z%rltYmDc5N ze)H*Y=vr86>saS4Qtwzbwd}wNVb+lzKfM7}x{HSs#YP(N)}xf^)lxtEGxHHGmUNOE z(};+loYr>%k^Lx8;M|4VYNcjI`KO8YKM6z<+GMT*TGd7+U04Z!kgi&9sh+N+Rr~i2<`bhS7pr= literal 0 HcmV?d00001 From 4933202d8c4cf59648983fcc6d59b01d1bad7b14 Mon Sep 17 00:00:00 2001 From: pkosanam Date: Wed, 20 Sep 2023 15:51:01 +0530 Subject: [PATCH 3/4] fixed text corrections as suggested --- quickstarts/anyscale/config.yml | 17 +++++++++-------- quickstarts/jina-ai/config.yml | 17 +++++++++-------- quickstarts/myscale/config.yml | 3 ++- quickstarts/ollama/config.yml | 17 +++++++++-------- quickstarts/openllm/config.yml | 17 +++++++++-------- quickstarts/starrocks/config.yml | 10 +++++----- 6 files changed, 43 insertions(+), 38 deletions(-) diff --git a/quickstarts/anyscale/config.yml b/quickstarts/anyscale/config.yml index b97a32cdd9..967fca1475 100644 --- a/quickstarts/anyscale/config.yml +++ b/quickstarts/anyscale/config.yml @@ -1,9 +1,9 @@ slug: anyscale description: | ## Why should you monitor your usage of Anyscale? - Monitor your application powered by Anyscale language models to ensure, get visibility to what you send to Anyscale, responses received from Anyscale , latency, usage and errors. By monitoring the usage, you can infer the cost. - ### Track the LLM's performance: - Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + Monitor your application powered by Anyscale language models to ensure, get visibility to what you send to Anyscale, responses received from Anyscale, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. ### Track your app: By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. ### Early issue detection: @@ -12,12 +12,12 @@ description: | ## Comprehensive Anyscale monitoring quickstart Our Anyscale quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. - ## What’s included in the Anyscale quickstart? - New Relic Anyscale monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Anyscale usage. These reports include: + ## What’s included in the Anyscale quickstart? + New Relic Anyscale monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Anyscale usage. These reports include: - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) - Alerts (errors, request per model and response time) summary: | - Improve the visibility of your Anyscale usage with New Relic Anyscale quickstart. + Improve the visibility of your Anyscale usage with New Relic Anyscale quickstart. icon: logo.svg level: - New Relic @@ -25,9 +25,9 @@ authors: - New Relic title: Anyscale documentation: - - name: Anyscale integration documentation + - name: Anyscale integration documentation description: | - Implement monitoring and instrumentation for your Anyscale app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your Anyscale app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic/nr-openai-observability dataSourceIds: - langchain @@ -35,6 +35,7 @@ keywords: - anyscale - large language model - natural language processing + - nlp - machine learning - artificial intelligence - ai diff --git a/quickstarts/jina-ai/config.yml b/quickstarts/jina-ai/config.yml index 7799843207..4edfe1b3ae 100644 --- a/quickstarts/jina-ai/config.yml +++ b/quickstarts/jina-ai/config.yml @@ -1,9 +1,9 @@ slug: jina-ai description: | ## Why should you monitor your usage of Jina AI? - Monitor your application powered by Jina AI language models to ensure, get visibility to what you send to Jina AI, responses received from Jina AI , latency, usage and errors. By monitoring the usage, you can infer the cost. - ### Track the LLM's performance: - Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + Monitor your application powered by Jina AI language models to ensure, get visibility to what you send to Jina AI, responses received from Jina AI, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. ### Track your app: By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. ### Early issue detection: @@ -12,12 +12,12 @@ description: | ## Comprehensive Jina AI monitoring quickstart Our Jina AI quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. - ## What’s included in the Jina AI quickstart? - New Relic Jina AI monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Jina AI usage. These reports include: + ## What’s included in the Jina AI quickstart? + New Relic Jina AI monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Jina AI usage. These reports include: - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) - Alerts (errors, request per model and response time) summary: | - Improve the visibility of your Jina AI usage with New Relic Jina AI quickstart. + Improve the visibility of your Jina AI usage with New Relic Jina AI quickstart. icon: logo.svg level: - New Relic @@ -25,9 +25,9 @@ authors: - New Relic title: Jina AI documentation: - - name: Jina AI integration documentation + - name: Jina AI integration documentation description: | - Implement monitoring and instrumentation for your Jina AI app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your Jina AI app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic/nr-openai-observability dataSourceIds: - langchain @@ -35,6 +35,7 @@ keywords: - jina-ai - large language model - natural language processing + - nlp - machine learning - artificial intelligence - ai diff --git a/quickstarts/myscale/config.yml b/quickstarts/myscale/config.yml index 701bef95d5..ccd3d44a3e 100644 --- a/quickstarts/myscale/config.yml +++ b/quickstarts/myscale/config.yml @@ -7,7 +7,7 @@ description: | ### Track the query performance of your Vector DB Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. - ### Track your app: + ### Track your app: By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. @@ -47,6 +47,7 @@ keywords: - ai - chatbots - natural language processing + - nlp - machine learning - deep learning - aiops diff --git a/quickstarts/ollama/config.yml b/quickstarts/ollama/config.yml index c60c8227ea..6af11a881d 100644 --- a/quickstarts/ollama/config.yml +++ b/quickstarts/ollama/config.yml @@ -1,9 +1,9 @@ slug: ollama description: | ## Why should you monitor your usage of Ollama? - Monitor your application powered by Ollama language models to ensure, get visibility to what you send to Ollama, responses received from Ollama , latency, usage and errors. By monitoring the usage, you can infer the cost. - ### Track the LLM's performance: - Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + Monitor your application powered by Ollama language models to ensure, get visibility to what you send to Ollama, responses received from Ollama, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. ### Track your app: By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. ### Early issue detection: @@ -12,12 +12,12 @@ description: | ## Comprehensive Ollama monitoring quickstart Our Ollama quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. - ## What’s included in the Ollama quickstart? - New Relic Ollama monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Ollama usage. These reports include: + ## What’s included in the Ollama quickstart? + New Relic Ollama monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your Ollama usage. These reports include: - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) - Alerts (errors, request per model and response time) summary: | - Improve the visibility of your Ollama usage with New Relic Ollama quickstart. + Improve the visibility of your Ollama usage with New Relic Ollama quickstart. icon: logo.png level: - New Relic @@ -25,9 +25,9 @@ authors: - New Relic title: Ollama documentation: - - name: Ollama integration documentation + - name: Ollama integration documentation description: | - Implement monitoring and instrumentation for your Ollama app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your Ollama app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic/nr-openai-observability dataSourceIds: - langchain @@ -35,6 +35,7 @@ keywords: - ollama - large language model - natural language processing + - nlp - machine learning - artificial intelligence - ai diff --git a/quickstarts/openllm/config.yml b/quickstarts/openllm/config.yml index 22d1a0672a..8ed94ee61d 100644 --- a/quickstarts/openllm/config.yml +++ b/quickstarts/openllm/config.yml @@ -1,9 +1,9 @@ slug: openllm description: | ## Why should you monitor your usage of OpenLLM? - Monitor your application powered by OpenLLM language models to ensure, get visibility to what you send to OpenLLM, responses received from OpenLLM , latency, usage and errors. By monitoring the usage, you can infer the cost. - ### Track the LLM's performance: - Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. + Monitor your application powered by OpenLLM language models to ensure, get visibility to what you send to OpenLLM, responses received from OpenLLM, latency, usage and errors. By monitoring the usage, you can infer the cost. + ### Track the LLM's performance: + Monitor the input & output, latency and errors of your LLM provider. Track performance changes with the providers and versions of your LLM. Monitor usage to understand the cost, rate limits, and general performance. ### Track your app: By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your LangChain app's performance and identify areas of improvement. ### Early issue detection: @@ -12,12 +12,12 @@ description: | ## Comprehensive OpenLLM monitoring quickstart Our OpenLLM quickstart provides metrics including error rate, input & output, latency, queries, and lets you integrate with different language models. - ## What’s included in the OpenLLM quickstart? - New Relic OpenLLM monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your OpenLLM usage. These reports include: + ## What’s included in the OpenLLM quickstart? + New Relic OpenLLM monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your OpenLLM usage. These reports include: - Dashboards (average tokens, LLM completion’s details, chain’s details, tool details, top tool names and many more) - Alerts (errors, request per model and response time) summary: | - Improve the visibility of your OpenLLM usage with New Relic OpenLLM quickstart. + Improve the visibility of your OpenLLM usage with New Relic OpenLLM quickstart. icon: logo.jpeg level: - New Relic @@ -25,9 +25,9 @@ authors: - New Relic title: OpenLLM documentation: - - name: OpenLLM integration documentation + - name: OpenLLM integration documentation description: | - Implement monitoring and instrumentation for your OpenLLM app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your OpenLLM app to ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic/nr-openai-observability dataSourceIds: - langchain @@ -35,6 +35,7 @@ keywords: - openllm - large language model - natural language processing + - nlp - machine learning - artificial intelligence - ai diff --git a/quickstarts/starrocks/config.yml b/quickstarts/starrocks/config.yml index 271858de9b..cd445075fc 100644 --- a/quickstarts/starrocks/config.yml +++ b/quickstarts/starrocks/config.yml @@ -7,20 +7,20 @@ description: | ### Track the query performance of your Vector DB Track the behavior of your vector stores. Monitor the latency, queries, the number of documents retrieved, and the content of the documents so that you can evaluate their relevance. - ### Track your app: + ### Track your app: By tracking key metrics like latency, throughput, error rates, and input & output, you can gain insights into your app's performance and identify areas of improvement. ### What’s included in this quickstart? - New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: - + StarRocks uses the LangChain Vector Database to connect to New Relic. This quickstart provides a variety of a pre-built dashboard, which will help you gain insights into the health and performance of your AI app. These reports include: + - Vector searches - Alerts for errors, search per vector store, and response time - Identify popular queries, sources, and content summary: | - Monitor your Vector search's performance and quality with New Relic StarRocks quickstart. + Monitor the performance and quality of your vector searches with New Relic SingleStoreDB quickstart. icon: logo.png level: New Relic authors: @@ -29,7 +29,7 @@ title: StarRocks documentation: - name: LangChain Vector Database integration documentation description: | - Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your vector data store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic/nr-openai-observability dataSourceIds: - langchain-vectordb From dcf458f5a7fcef9a6a3042ad80a6a82bc54bd338 Mon Sep 17 00:00:00 2001 From: pkosanam Date: Wed, 20 Sep 2023 15:55:29 +0530 Subject: [PATCH 4/4] updated langchain-vectordb quickstarts --- quickstarts/myscale/config.yml | 6 +++--- quickstarts/starrocks/config.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/quickstarts/myscale/config.yml b/quickstarts/myscale/config.yml index ccd3d44a3e..9e240e1beb 100644 --- a/quickstarts/myscale/config.yml +++ b/quickstarts/myscale/config.yml @@ -13,14 +13,14 @@ description: | ### What’s included in this quickstart? - New Relic LangChain monitoring quickstart provides a variety of pre-built dashboards, which will help you gain insights into the health and performance of your LangChain app. These reports include: + MyScale uses the LangChain Vector Database to connect to New Relic. This quickstart provides a variety of a pre-built dashboard, which will help you gain insights into the health and performance of your AI app. These reports include: - Vector searches - Alerts for errors, search per vector store, and response time - Identify popular queries, sources, and content summary: | - Monitor your Vector search's performance and quality with New Relic MyScale quickstart. + Monitor the performance and quality of your vector searches with New Relic MyScale quickstart. icon: logo.jpeg level: New Relic authors: @@ -29,7 +29,7 @@ title: MyScale documentation: - name: LangChain Vector Database integration documentation description: | - Implement monitoring and instrumentation for your Vector store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. + Implement monitoring and instrumentation for your vector data store, and ensure that your observability data is integrated into New Relic for effective performance analysis and insights. url: https://github.com/newrelic/nr-openai-observability dataSourceIds: - langchain-vectordb diff --git a/quickstarts/starrocks/config.yml b/quickstarts/starrocks/config.yml index cd445075fc..06be1c11eb 100644 --- a/quickstarts/starrocks/config.yml +++ b/quickstarts/starrocks/config.yml @@ -20,7 +20,7 @@ description: | - Identify popular queries, sources, and content summary: | - Monitor the performance and quality of your vector searches with New Relic SingleStoreDB quickstart. + Monitor the performance and quality of your vector searches with New Relic StarRocks quickstart. icon: logo.png level: New Relic authors: