首页 后端开发 Python教程 使用 LangChain 和 Llama 构建文章生成器人工智能开发者之旅

使用 LangChain 和 Llama 构建文章生成器人工智能开发者之旅

Dec 30, 2024 am 09:25 AM

使用 LangChain 和 Llama3 构建文章生成器:人工智能开发者之旅

作为一名 AI 开发人员,我经常发现自己在寻找使复杂的大型语言模型 (LLM) 交互更易于管理的方法。 LangChain 引起了我的注意,不仅因为它在人工智能开发社区中越来越受欢迎,还因为它解决常见的 LLM 集成挑战的实用方法。该框架将复杂的法学硕士操作转变为简化的工作流程的声誉引起了我的兴趣,并对其进行了测试。我决定构建一个文章生成系统,将 LangChain 的功能与 Llama3 模型结合起来,创建一个具有实际应用的工具。

为什么浪链有意义

LangChain 通过提供结构化、直观的方法来处理复杂操作,改变了我们与法学硕士互动的方式。将其视为精心设计的开发套件,每个组件都有特定的用途。该框架提供了一个干净的界面,从开发人员的角度来看,感觉很自然,而不是兼顾原始 API 调用和手动管理提示。这不仅仅是为了简化流程,而是为了使 LLM 应用程序更加可靠和可维护。

浪链关键组件

LangChain 的核心是使用链,即连接在一起的操作序列来创建更复杂的行为。这些链执行从格式化提示到处理模型响应的所有操作。虽然该框架包括用于管理提示和维护交互上下文的复杂系统,但我将主要关注我们的文章生成器的链和提示方面。

文章生成器

对于这个项目,我想构建一些实用的系统,可以根据主题、长度、语气和目标受众等特定参数生成定制文章。通过 Ollama 访问的 Llama3 模型为这项任务提供了性能和灵活性的适当平衡。

入门

设置很简单:

  1. 首先,我安装了必要的软件包:
pip install langchain langchain-ollama requests
登录后复制
登录后复制
  1. 然后,我设置了 Ollama:
    1. 我从 https://ollama.com/blog/llama3 下载并安装了 Ollama
    2. 在一个新终端中,我启动了 Ollama 服务器:
ollama serve
登录后复制
登录后复制
  1. 我拉了Llama3模型:
ollama pull llama3
登录后复制
登录后复制

使用文章生成器时,Ollama 服务器必须在其终端中运行。如果关闭,生成器将无法连接到模型。

构建核心组件

让我们来分解一下系统各个部分的工作原理:

连接管理

这个简单的检查有助于通过尽早发现连接问题来避免运行时错误。这是检查 Ollama 服务器连接的可靠方法:

pip install langchain langchain-ollama requests
登录后复制
登录后复制

型号配置

模型设置对于在我们生成的内容中获得适当的平衡至关重要:

ollama serve
登录后复制
登录后复制

这些参数代表了我在测试文章生成的各种组合后发现的最佳点。

温度 (0.7): 控制输出的随机性。较低的值(如 0.3)将使文本更可预测,而较高的值(如 0.9)将使其更具创意。 0.7 是一个很好的平衡。

Top_p (0.9): 此参数也称为核心采样,告诉模型要考虑多少个单词选项。在 0.9 时,它会考虑足够的选项来保持文本的趣味性,同时保持对主题的关注。

num_ctx(4096): 上下文窗口大小,或者模型一次可以处理多少文本。这为输入和大量文章输出提供了足够的空间,因为它可以处理大约 3000-3500 个单词。

及时工程

提示模板是我们定义模型所需内容的地方:

ollama pull llama3
登录后复制
登录后复制

发电管道

浪链最优雅的特点之一就是其简单的链组成:

def check_ollama_connection():
    """
    Check if Ollama server is running
    """
    try:
        requests.get('http://localhost:11434/api/tags')
        return True
    except requests.exceptions.ConnectionError:
        return False
登录后复制

这一行创建了一个完整的生成管道,用于处理提示格式化、模型交互和响应处理。

命令行界面

为了使该工具用户友好,我实现了一个命令行界面:

llm = OllamaLLM(
    model="llama3",
    temperature=0.7,  # Balances creativity and consistency
    top_p=0.9,       # Helps with text diversity
    num_ctx=4096     # Sets the context window
)
登录后复制

实际使用

生成器的使用非常简单:运行代码并传递参数。

例子#1

article_template = """
You are a professional content writer tasked with creating a comprehensive article.

Topic: {topic}

Writing Requirements:
1. Length: Approximately {word_count} words
2. Style: {tone} tone
3. Target Audience: {audience}
4. Format: Plain text without any markdown notation
5. Additional Details/Requirements: {extra_details}

Content Structure Guidelines:
- Start with an engaging introduction that hooks the reader
- Organize content into clear sections with descriptive headings (not numbered)
- Include relevant examples, statistics, or case studies when appropriate
- Provide practical insights and actionable takeaways
- End with a compelling conclusion that summarizes key points
- Ensure smooth transitions between paragraphs and sections

Writing Style Guidelines:
- Use clear, concise language appropriate for the target audience
- Avoid jargon unless necessary for the target audience
- Incorporate relevant examples and real-world applications
- Maintain an engaging and natural flow throughout the article
- Use active voice predominantly
- Include specific details and evidence to support main points
- Ensure proper paragraph breaks for readability

Additional Notes:
- Do not use any markdown formatting
- Keep paragraphs concise and focused
- Use proper spacing between sections
- If technical terms are used, provide brief explanations
- Include a brief overview of what will be covered at the start

Please write the article now:
"""
登录后复制

生成的文章:

chain = prompt | llm
登录后复制

例子#2

def parse_arguments():
    """
    Parse command line arguments
    """
    parser = argparse.ArgumentParser(description='Generate an article using AI')

    parser.add_argument('--topic', 
                       type=str, 
                       required=True,
                       help='The topic of the article')

    parser.add_argument('--word-count', 
                       type=int, 
                       default=800,
                       help='Target word count (default: 800)')

    parser.add_argument('--tone', 
                       type=str, 
                       default='professional',
                       choices=['professional', 'casual', 'academic', 'informative', 'technical'],
                       help='Writing tone (default: professional)')

    parser.add_argument('--audience', 
                       type=str, 
                       default='general',
                       help='Target audience (default: general)')

    parser.add_argument('--extra-details', 
                       type=str, 
                       default='',
                       help='Additional requirements or details for the article')

    return parser.parse_args()
登录后复制

生成的文章:

python main.py \
  --topic "Benefits of playing board games with friends" \
  --word-count 200 \
  --tone casual \
  --audience "Board games lovers" \
  --extra-details "Avoid markdown notation"
登录后复制

主要经验教训

通过这个项目,我发现了关于使用 LangChain 的几个重要见解:

  1. 性能模式:由于模型加载,第一代需要更长的时间,但后续运行速度明显更快。
  2. 上下文管理:4096 个令牌的上下文窗口为大多数文章提供了充足的空间,同时保持良好的性能。
  3. 生成参数:Temperature (0.7) 和 top_p (0.9) 设置提供了创造力和连贯性之间的最佳平衡。

最后的想法

构建这篇文章生成器展示了LangChain在AI开发方面的实用价值。它可以处理法学硕士交互的复杂性,同时让开发人员可以自由地专注于构建有用的功能。该框架在抽象和控制之间取得了平衡,使创建可靠的人工智能应用程序变得更加容易。

对于该领域的亲爱的同事或单独的爱好者,我相信LangChain提供了开发所需的所有必要意义,而最好的部分是:它不是与灵活性的权衡。考虑到人工智能工具领域正在呈指数级增长,像LangChain这样的框架对于构建实用的、生产就绪的应用程序将变得更有价值。

Building an Article Generator with LangChain and LlamaAn AI Developer

浪链鹦鹉和链条的标志背后蕴藏着巧妙的寓意。鹦鹉指的是法学硕士有时被称为“随机鹦鹉”,因为他们重复和改造人类语言。链部分是一个有趣的参考,说明框架如何帮助将语言模型“鹦鹉”“链接”到有用的应用程序中。

以上是使用 LangChain 和 Llama 构建文章生成器人工智能开发者之旅的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何解决Linux终端中查看Python版本时遇到的权限问题? 如何解决Linux终端中查看Python版本时遇到的权限问题? Apr 01, 2025 pm 05:09 PM

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到? 如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到? Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

在Python中如何高效地将一个DataFrame的整列复制到另一个结构不同的DataFrame中? 在Python中如何高效地将一个DataFrame的整列复制到另一个结构不同的DataFrame中? Apr 01, 2025 pm 11:15 PM

在使用Python的pandas库时,如何在两个结构不同的DataFrame之间进行整列复制是一个常见的问题。假设我们有两个Dat...

Uvicorn是如何在没有serve_forever()的情况下持续监听HTTP请求的? Uvicorn是如何在没有serve_forever()的情况下持续监听HTTP请求的? Apr 01, 2025 pm 10:51 PM

Uvicorn是如何持续监听HTTP请求的?Uvicorn是一个基于ASGI的轻量级Web服务器,其核心功能之一便是监听HTTP请求并进�...

如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础? 如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础? Apr 02, 2025 am 07:18 AM

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

在Linux终端中使用python --version命令时如何解决权限问题? 在Linux终端中使用python --version命令时如何解决权限问题? Apr 02, 2025 am 06:36 AM

Linux终端中使用python...

如何绕过Investing.com的反爬虫机制获取新闻数据? 如何绕过Investing.com的反爬虫机制获取新闻数据? Apr 02, 2025 am 07:03 AM

攻克Investing.com的反爬虫策略许多人尝试爬取Investing.com(https://cn.investing.com/news/latest-news)的新闻数据时,常常�...

See all articles