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

使用 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
如何使用Python查找文本文件的ZIPF分布如何使用Python查找文本文件的ZIPF分布Mar 05, 2025 am 09:58 AM

本教程演示如何使用Python处理Zipf定律这一统计概念,并展示Python在处理该定律时读取和排序大型文本文件的效率。 您可能想知道Zipf分布这个术语是什么意思。要理解这个术语,我们首先需要定义Zipf定律。别担心,我会尽量简化说明。 Zipf定律 Zipf定律简单来说就是:在一个大型自然语言语料库中,最频繁出现的词的出现频率大约是第二频繁词的两倍,是第三频繁词的三倍,是第四频繁词的四倍,以此类推。 让我们来看一个例子。如果您查看美国英语的Brown语料库,您会注意到最频繁出现的词是“th

如何在Python中下载文件如何在Python中下载文件Mar 01, 2025 am 10:03 AM

Python 提供多种从互联网下载文件的方法,可以使用 urllib 包或 requests 库通过 HTTP 进行下载。本教程将介绍如何使用这些库通过 Python 从 URL 下载文件。 requests 库 requests 是 Python 中最流行的库之一。它允许发送 HTTP/1.1 请求,无需手动将查询字符串添加到 URL 或对 POST 数据进行表单编码。 requests 库可以执行许多功能,包括: 添加表单数据 添加多部分文件 访问 Python 的响应数据 发出请求 首

python中的图像过滤python中的图像过滤Mar 03, 2025 am 09:44 AM

处理嘈杂的图像是一个常见的问题,尤其是手机或低分辨率摄像头照片。 本教程使用OpenCV探索Python中的图像过滤技术来解决此问题。 图像过滤:功能强大的工具 图像过滤器

我如何使用美丽的汤来解析HTML?我如何使用美丽的汤来解析HTML?Mar 10, 2025 pm 06:54 PM

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

如何使用Python使用PDF文档如何使用Python使用PDF文档Mar 02, 2025 am 09:54 AM

PDF 文件因其跨平台兼容性而广受欢迎,内容和布局在不同操作系统、阅读设备和软件上保持一致。然而,与 Python 处理纯文本文件不同,PDF 文件是二进制文件,结构更复杂,包含字体、颜色和图像等元素。 幸运的是,借助 Python 的外部模块,处理 PDF 文件并非难事。本文将使用 PyPDF2 模块演示如何打开 PDF 文件、打印页面和提取文本。关于 PDF 文件的创建和编辑,请参考我的另一篇教程。 准备工作 核心在于使用外部模块 PyPDF2。首先,使用 pip 安装它: pip 是 P

如何在django应用程序中使用redis缓存如何在django应用程序中使用redis缓存Mar 02, 2025 am 10:10 AM

本教程演示了如何利用Redis缓存以提高Python应用程序的性能,特别是在Django框架内。 我们将介绍REDIS安装,Django配置和性能比较,以突出显示BENE

引入自然语言工具包(NLTK)引入自然语言工具包(NLTK)Mar 01, 2025 am 10:05 AM

自然语言处理(NLP)是人类语言的自动或半自动处理。 NLP与语言学密切相关,并与认知科学,心理学,生理学和数学的研究有联系。在计算机科学

如何使用TensorFlow或Pytorch进行深度学习?如何使用TensorFlow或Pytorch进行深度学习?Mar 10, 2025 pm 06:52 PM

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。