This package provides an integrated tool for generating and executing C/C++ code snippets externally in Langchain. Allows Langchain users to specify the desired C++ standard version and set optional CPU time limits for code execution. Provides an interface with subprocess to run the generated C/C++ code.
pip3 install cpp-langchain
- C/C++ Code Generation and Execution: Generate and execute C/C++ code snippets to provide answers.
- Version Selection: Specify the desired C++ standard version (e.g., c++11, c++14, c++17, c++20).
- CPU Time Limits: Set optional CPU time limits for code execution to prevent long-running processes.
This tool can execute arbitrary code on the host machine. Use with caution and only if you fully understand the security risks associated with subprocess execution.
- Default Safety: The
allow_dangerous_code
option is set toFalse
by default to prevent unauthorized code execution. - Risk Acceptance: If you choose to set
allow_dangerous_code
toTrue
, you acknowledge and accept the potential risks of executing malicious code.
Below is a simple script to use CppSubprocessTool with Langchain.
For more advanced usages please check example notebook.
import os
os.environ["OPENAI_API_KEY"] = ""
from cpp_langchain import CppSubprocessTool
tools = [CppSubprocessTool(allow_dangerous_code=True)]
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
llm = ChatOpenAI(model="gpt-4")
prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"You are a helpful coding assistant. Make sure to use the CppSubprocessTool tool for code execution.",
),
("placeholder", "{chat_history}"),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
]
)
# Construct the Tools agent
agent = create_tool_calling_agent(llm, tools, prompt)
# Create an agent executor by passing in the agent and tools
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# Execute agent
agent_executor.invoke({"input": "What is the 10th fibonacci number?"})