<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Uri Peled</title>
    <description>The latest articles on DEV Community by Uri Peled (@uripeled2).</description>
    <link>https://dev.to/uripeled2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1096031%2F26ceb348-1c39-4285-a7a9-d9dae14dfcef.jpeg</url>
      <title>DEV Community: Uri Peled</title>
      <link>https://dev.to/uripeled2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/uripeled2"/>
    <language>en</language>
    <item>
      <title>LangChain vs. LLM-Client</title>
      <dc:creator>Uri Peled</dc:creator>
      <pubDate>Sat, 01 Jul 2023 16:47:40 +0000</pubDate>
      <link>https://dev.to/uripeled2/langchain-vs-llm-client-15hf</link>
      <guid>https://dev.to/uripeled2/langchain-vs-llm-client-15hf</guid>
      <description>&lt;p&gt;Large Language models (LLMs) have revolutionized the way we interact with text, opening up a world of possibilities for various applications. Whether you want to automate text generation, enhance natural language understanding, or create interactive and intelligent user experiences.&lt;br&gt;
The landscape is filled with a diverse range of powerful LLMs from various providers. OpenAI, Google, AI21, HuggingfaceHub, Aleph Alpha, Anthropic, and numerous open-source models offer different capabilities and strengths. However, integrating these models can be a time-consuming and challenging task due to their unique architectures, APIs, and compatibility requirements.&lt;/p&gt;

&lt;p&gt;That’s where &lt;a href="https://github.com/uripeled2/llm-client-sdk" rel="noopener noreferrer"&gt;llm-client&lt;/a&gt; and &lt;a href="https://github.com/hwchase17/langchain" rel="noopener noreferrer"&gt;LangChain&lt;/a&gt; come into play. These LLM integration tools provide a streamlined approach to incorporating different language models into your projects. They simplify the integration process, abstracting away the complexities and nuances associated with each individual LLM. With llm-client and LangChain, you can save valuable time and effort that would otherwise be spent on understanding and integrating multiple LLMs.&lt;/p&gt;

&lt;p&gt;By using llm-client or LangChain, you gain the advantage of a unified interface that enables seamless integration with various LLMs. Rather than dealing with the intricacies of each model individually, you can leverage these tools to abstract the underlying complexities and focus on harnessing the power of language models for your specific application.&lt;br&gt;
In the following sections, we will delve deeper into the features, advantages, and considerations of llm-client and LangChain, shedding light on how they simplify LLM integration and empower you to make the most informed decisions for your projects.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Disclaimer: I am the author of llm-client. While I have strived to present a balanced comparison between llm-client and LangChain, my perspectives may be influenced by my close association with the development of llm-client.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2zkntkazv4yzt0nzf9j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2zkntkazv4yzt0nzf9j.png" alt="LangChain logo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  LLM-Client and LangChain
&lt;/h2&gt;

&lt;p&gt;llm-client and LangChain act as intermediaries, bridging the gap between different LLMs and your project requirements. They provide a consistent API, allowing you to switch between LLMs without extensive code modifications or disruptions. This flexibility and compatibility make it easier to experiment with different models, compare their performance, and choose the most suitable one for your project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LangChain&lt;/strong&gt;, a reputable player in the field, is known for its wide range of features like generic interface to LLMs (the one we are talking about), framework to help you manage your prompts, central interface to long-term memory, Indexes, Chains of LLMs, and other agents for tasks an LLM is not able to handle (e.g., calculations or search). It has a huge community support system (over 50K stars on GitHub as the write of this blog).&lt;br&gt;
You can find out more about LangChain in this &lt;a href="https://towardsdatascience.com/getting-started-with-langchain-a-beginners-guide-to-building-llm-powered-applications-95fc8898732c" rel="noopener noreferrer"&gt;blog post&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLM-Client&lt;/strong&gt;, on the other hand, is specifically engineered for Large Language Models (LLMs) integration. It is praised for its user-friendly interface and focus on removing integration complexities, providing developers with a seamless experience.&lt;/p&gt;
&lt;h2&gt;
  
  
  Unpacking Their Advantages
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvgk6t7g09m0x3j05asx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvgk6t7g09m0x3j05asx.jpg" alt="Two boxers fights"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  LangChain: Community Support and Simple Non-Async Usage
&lt;/h2&gt;

&lt;p&gt;LangChain’s expansive community serves as a significant advantage. Additionally, LangChain excels with its straightforward support for non-async usage.&lt;/p&gt;

&lt;p&gt;To generate text with LangChain, you can use the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;langchain&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;llms&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain.llms&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;  &lt;span class="c1"&gt;# Or any other model avilable on LangChain
&lt;/span&gt;
&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="c1"&gt;# insert your API_TOKEN here
&lt;/span&gt;
&lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text-ada-001&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;best_of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Here you can pass addtinal params e.g temperature, max_tokens etc.
&lt;/span&gt;
&lt;span class="nf"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Tell me a joke&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For async text generation (only available for some of the models), the following code can be used:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;await llm.agenerate(["Hello, how are you?"])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;LangChain also supports generating embeddings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain.embeddings.openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAIEmbeddings&lt;/span&gt;  &lt;span class="c1"&gt;# Or any other model avilable on LangChain
&lt;/span&gt;
&lt;span class="n"&gt;embeddings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAIEmbeddings&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;query_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;embeddings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;embed_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;doc_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;embeddings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;embed_documents&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  LLM-Client: Performance, Flexibility
&lt;/h3&gt;

&lt;p&gt;In contrast, the llm-client offers a convenient wrapper with standardized parameters, enabling developers to bypass complicated setups or inconsistent configurations. This tool is particularly designed for seamless integration with LLMs, eliminating unnecessary features or dependencies.&lt;/p&gt;

&lt;p&gt;Furthermore, the llm-client provides developers greater control over the ClientSession, paving the way for future asynchronous capabilities. Here’s how to perform text completion asynchronously with the llm-client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;aiohttp&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ClientSession&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;llm_client&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAIClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;LLMAPIClientConfig&lt;/span&gt;  &lt;span class="c1"&gt;# Or any other model avilable on llm-client
&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nc"&gt;ClientSession&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="n"&gt;llm_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAIClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;LLMAPIClientConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;default_model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text-ada-001&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;This is indeed a test&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
  &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;generated text:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;llm_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text_completion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;best_of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# Here you can pass addtinal params e.g temperature, max_tokens etc.
&lt;/span&gt;&lt;span class="n"&gt;LLM&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Client&lt;/span&gt; &lt;span class="n"&gt;also&lt;/span&gt; &lt;span class="n"&gt;supports&lt;/span&gt; &lt;span class="n"&gt;embeddings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;llm_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;embedding&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can do the above without async:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;llm_client&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;init_sync_llm_api_client&lt;/span&gt;

&lt;span class="n"&gt;llm_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;init_sync_llm_api_client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LLMAPIClientType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OPEN_AI&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                                      &lt;span class="n"&gt;default_model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text-ada-001&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;This is indeed a test&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;llm_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text_completion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;best_of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;llm_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;embedding&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Feature Comparison
&lt;/h2&gt;

&lt;p&gt;To provide a more clear comparison, let’s look at a side-by-side feature comparison of both tools:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq1uklkarzq1ku5e6ko1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq1uklkarzq1ku5e6ko1.png" alt="A table comparison"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;While both LangChain and the llm-client present unique strengths, your choice should be based on your specific requirements and comfort level. LangChain’s substantial community and straightforward non-async usage may suit developers looking for a collaborative environment and simpler synchronous operations. Conversely, the llm-client’s performance, flexibility and purposeful design for LLM integration make it an excellent choice for those seeking maximum control, efficient and streamlined workflows.&lt;/p&gt;

&lt;p&gt;By understanding your needs and examining the capabilities of these tools, you’ll be better equipped to make an informed decision. Remember, the best tool is the one that most effectively serves your purpose. Happy coding!&lt;/p&gt;

</description>
      <category>llm</category>
      <category>openai</category>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>Using LLMs the Right Way with Python</title>
      <dc:creator>Uri Peled</dc:creator>
      <pubDate>Mon, 05 Jun 2023 16:43:04 +0000</pubDate>
      <link>https://dev.to/uripeled2/using-llms-the-right-way-with-python-30ok</link>
      <guid>https://dev.to/uripeled2/using-llms-the-right-way-with-python-30ok</guid>
      <description>&lt;p&gt;🚀 Excited to announce the release of &lt;a href="https://github.com/uripeled2/llm-client-sdk"&gt;LLM-Client-SDK&lt;/a&gt;, an open-source Python package for seamless integration with generative AI large language models! 🌟&lt;/p&gt;

&lt;p&gt;With LLM-Client-SDK, developers can easily communicate with popular language models like OpenAI, Goggle, AI21 Labs, Hugging Face, Aleph Alpha, Anthropic and more, without sacrificing flexibility. Whether you're working with async native environments or need synchronous support, our SDK has got you covered.&lt;/p&gt;

&lt;p&gt;Check it out: &lt;a href="https://lnkd.in/dC32nWWj"&gt;https://lnkd.in/dC32nWWj&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course it's far from being perfect, but I'll constantly work on making it better and better! Stay tuned for updates on what comes next! 👾&lt;/p&gt;

&lt;p&gt;🌟 Let's shape the future of AI together! Contributions to LLM-Client-SDK are welcome.&lt;/p&gt;

</description>
      <category>llm</category>
      <category>python</category>
      <category>opensource</category>
      <category>chatgpt</category>
    </item>
  </channel>
</rss>
