搜索
首页后端开发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中的合并列表:选择正确的方法Python中的合并列表:选择正确的方法May 14, 2025 am 12:11 AM

Tomergelistsinpython,YouCanusethe操作员,estextMethod,ListComprehension,Oritertools

如何在Python 3中加入两个列表?如何在Python 3中加入两个列表?May 14, 2025 am 12:09 AM

在Python3中,可以通过多种方法连接两个列表:1)使用 运算符,适用于小列表,但对大列表效率低;2)使用extend方法,适用于大列表,内存效率高,但会修改原列表;3)使用*运算符,适用于合并多个列表,不修改原列表;4)使用itertools.chain,适用于大数据集,内存效率高。

Python串联列表字符串Python串联列表字符串May 14, 2025 am 12:08 AM

使用join()方法是Python中从列表连接字符串最有效的方法。1)使用join()方法高效且易读。2)循环使用 运算符对大列表效率低。3)列表推导式与join()结合适用于需要转换的场景。4)reduce()方法适用于其他类型归约,但对字符串连接效率低。完整句子结束。

Python执行,那是什么?Python执行,那是什么?May 14, 2025 am 12:06 AM

pythonexecutionistheprocessoftransformingpypythoncodeintoExecutablestructions.1)InternterPreterReadSthecode,ConvertingTingitIntObyTecode,whepythonvirtualmachine(pvm)theglobalinterpreterpreterpreterpreterlock(gil)the thepythonvirtualmachine(pvm)

Python:关键功能是什么Python:关键功能是什么May 14, 2025 am 12:02 AM

Python的关键特性包括:1.语法简洁易懂,适合初学者;2.动态类型系统,提高开发速度;3.丰富的标准库,支持多种任务;4.强大的社区和生态系统,提供广泛支持;5.解释性,适合脚本和快速原型开发;6.多范式支持,适用于各种编程风格。

Python:编译器还是解释器?Python:编译器还是解释器?May 13, 2025 am 12:10 AM

Python是解释型语言,但也包含编译过程。1)Python代码先编译成字节码。2)字节码由Python虚拟机解释执行。3)这种混合机制使Python既灵活又高效,但执行速度不如完全编译型语言。

python用于循环与循环时:何时使用哪个?python用于循环与循环时:何时使用哪个?May 13, 2025 am 12:07 AM

useeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.ForloopSareIdeAlforkNownsences,而WhileLeleLeleLeleLoopSituationSituationSituationsItuationSuationSituationswithUndEtermentersitations。

Python循环:最常见的错误Python循环:最常见的错误May 13, 2025 am 12:07 AM

pythonloopscanleadtoerrorslikeinfiniteloops,modifyingListsDuringteritation,逐个偏置,零indexingissues,andnestedloopineflinefficiencies

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脱衣机

Video Face Swap

Video Face Swap

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

热门文章

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

PhpStorm Mac 版本

PhpStorm Mac 版本

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

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具